Windows 2008
Build
Best practice for VMware VMs (take with a pinch of salt, one man's best practice can be another man's gotcha)
Disable ASLR
Address space layout randomisation is a feature which involves randomly arranging the positions of key data areas, in order to mitigate memory snapshot image vulnerabilities (which is generally not a problem). There are suggestions that this can reduce reduce VMware's page sharing between VM's, increasing overall physical memory usage. However, its probably true that whilst memory page locations will be randomised, the VMkernel will still be able to match up identical pages between different OS instances.
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\"MoveImages"=dword:00000000
Procedures
Sysprep
- Start sysprep from
C:\Windows\System32\sysprep\sysprep.exe
- Leave action as Enter System Out-of-Box Experience (OOBE) and tick the poorly spelt Generalize tick-box, then hit OK
- Sysprep will run and reboot the OS
- You'll need to provide a new password, and any hostname and IP details will need updating
NTP Client
Machines that are part of a domain will synchronise their time with the domain controllers, but standalone machines (or domain controllers) need to be configured to behave as NTP clients.
The server's NTP config in the registry hive HKLM\SYSTEM\CurrentControlSet\Services\W32Time
needs to be updated as follows to enable the server's system clock to update via NTP. Restart the NTP service to apply.
Key | Name | Value | Notes |
---|---|---|---|
Parameters | Type | NTP | |
NtpServer | 192.168.206.25,0x1 192.168.206.26,0x1 | Space separated list, each name/IP must have ,0x1 appended to the end
| |
TimeProviders \ NtpServer | Enabled | 1 | Only required if you wish other servers to be able to poll your server for time |
TimeProviders \ NtpClient | SpecialPollInterval | 1800 | Secs. Interval between successive NTP polls |
Config | AnnounceFlags | 5 | |
MaxAllowedPhaseOffset | 30 | Secs. If clock if off by more, its' abruptly set rather than incremented | |
MaxPosPhaseCorrection | 5400 | Secs. Maximum positive phase correction allowed (if greater, no change occurs) | |
MaxNegPhaseCorrection | 5400 | Secs. Maximum negative phase correction allowed (if greater, no change occurs) |
Once completed, restart the Win32 Time service
net stop w32time
net start w32time
To locate suitable NTP servers to use, see http://www.pool.ntp.org/
See http://support.microsoft.com/kb/816042 for further info on setting the above parameters
Network Connectivity Status Indicator (NCSI)
NCSI is the feature that causes the "No Internet Access" alert pop-up that can appear over your network connection.
- An HTTP request for http://www.msftncsi.com/ncsi.txt
- Which returns a single line
Microsoft NCSI
- Which returns a single line
- A DNS request for dns.msftncsi.com
- Which is expected to resolve to 131.107.255.255
To disable NCSI checks
- Start the relevant Group Policy editor (gpmc.msc or GPEdit.msc)
- Browse through to Internet Communication settings
- Computer Configuration > Administrative Templates > System > Internet Communication Management > Internet Communication settings
- Set Turn off Windows Network Connectivity Status Indicator active tests to Enabled
- Run
gpupdate
to apply
To disable the "No Internet Access" pop-up
- Start the relevant Group Policy editor (gpmc.msc or GPEdit.msc)
- Browse through to Network Connections
- Computer Configuration > Administrative Templates > Network > Network Connections
- Set Do not show the “local access only” network icon to Enabled
- Run
gpupdate
to apply
The underlying settings that govern how NCSI operates can be found in the following registry key
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
Further reading... http://technet.microsoft.com/en-us/library/ee126135%28WS.10%29.aspx http://defaultreasoning.wordpress.com/2010/05/14/disable-%E2%80%9Cno-internet-access%E2%80%9D-notification-on-windows-server-2008-r2/
Troubleshooting
Default Gateway Loss
Known bug in Windows 2008 SP2 causes the default gateway of a machine to disappear on reboot. Resolved by resetting the IP stack and re-entering the IP config
- Record IP details
ipconfig/all > C:\ipconfig.txt
- Reset the IP stack
netsh int ip reset
- Restart server
- Re-enter IP config
- Reboot to confirm its held
There's a bugfix available from http://support.microsoft.com/kb/973243
Scheduled Tasks
More common scheduled task error codes...
Code | Constant | Cause / meaning |
---|---|---|
0x0 | Success / no error | |
0x1 | Incorrect function called or unknown function called. Can also be caused by file permission problems. | |
0x2 | File not found | |
0xa | The environment is incorrect | |
0x41300 | SCHED_S_TASK_READY | Task is ready to run at its next scheduled time |
0x41301 | SCHED_S_TASK_RUNNING | Task is currently running |
0x41302 | SCHED_S_TASK_DISABLED | Task is disabled |
0x41303 | SCHED_S_TASK_HAS_NOT_RUN | Task has not yet run |
0x41304 | SCHED_S_TASK_NO_MORE_RUNS | No more scheduled runs for the task |
0x41305 | SCHED_S_TASK_NOT_SCHEDULED | One or more of the config properties needed to run the task on a schedule have not been set |
0x41306 | SCHED_S_TASK_TERMINATED | Task was terminated by user |
0x41307 | SCHED_S_TASK_NO_VALID_TRIGGERS | Task either has no triggers or the existing triggers are disabled or not set |
0x41308 | SCHED_S_EVENT_TRIGGER | Event triggers do not have set run times |
0x4131B | SCHED_S_SOME_TRIGGERS_FAILED | Task is registered, but not all specified triggers will start the task |
0x4131C | SCHED_S_BATCH_LOGON_PROBLEM | Task is registered, but may fail to start. Batch logon privilege needs to be enabled for the task principal. |
0x41325 | SCHED_S_TASK_QUEUED | Task Scheduler service has asked the task to run |
0x80041309 | SCHED_E_TRIGGER_NOT_FOUND | Task's trigger is not found |
0x8004130A | SCHED_E_TASK_NOT_READY | One or more of the properties required to run this task have not been set |
0x8004130B | SCHED_E_TASK_NOT_RUNNING | There is no running instance of the task |
0x8004130C | SCHED_E_SERVICE_NOT_INSTALLED | Task Scheduler service is not installed |
0x8004130D | SCHED_E_CANNOT_OPEN_TASK | Task object could not be opened |
0x8004130E | SCHED_E_INVALID_TASK | The object is either an invalid task object or is not a task object |
0x8004130F | SCHED_E_ACCOUNT_INFORMATION_NOT_SET | No account information could be found in the Task Scheduler security database for the task |
0x80041310 | SCHED_E_ACCOUNT_NAME_NOT_FOUND | Unable to establish existence of the account specified |
0x80041311 | SCHED_E_ACCOUNT_DBASE_CORRUPT | Task Scheduler security database has been reset due to detected corruption |
0x80041312 | SCHED_E_NO_SECURITY_SERVICES | Task Scheduler security services are available only on Windows NT |
0x80041313 | SCHED_E_UNKNOWN_OBJECT_VERSION | Task object version is unsupported or invalid |
0x80041314 | SCHED_E_UNSUPPORTED_ACCOUNT_OPTION | Task has unsupported/conflicting combination of account settings and run time options |
0x80041315 | SCHED_E_SERVICE_NOT_RUNNING | Task Scheduler Service is not running |
0x80041316 | SCHED_E_UNEXPECTEDNODE | Task's XML contains an unexpected node (corruption?) |
0x80041317 | SCHED_E_NAMESPACE | Task's XML contains an element or attribute from an unexpected namespace |
0x80041318 | SCHED_E_INVALIDVALUE | Task's XML contains a value which is incorrectly formatted or out of range |
0x80041319 | SCHED_E_MISSINGNODE | Task's XML is missing a required element or attribute |
0x8004131A | SCHED_E_MALFORMEDXML | Task's XML is malformed |
0x8004131D | SCHED_E_TOO_MANY_NODES | Task's XML contains too many nodes of the same type |
0x8004131E | SCHED_E_PAST_END_BOUNDARY | Task cannot be started after the trigger end boundary |
0x8004131F | SCHED_E_ALREADY_RUNNING | An instance of this task is already running |
0x80041320 | SCHED_E_USER_NOT_LOGGED_ON | Task will not run because the user is not logged on |
0x80041321 | SCHED_E_INVALID_TASK_HASH | Task image is corrupt or has been tampered with |
0x80041322 | SCHED_E_SERVICE_NOT_AVAILABLE | Task Scheduler service is not available |
0x80041323 | SCHED_E_SERVICE_TOO_BUSY | Task Scheduler service is too busy to handle request |
0x80041324 | SCHED_E_TASK_ATTEMPTED | Task Scheduler service attempted to run the task, but it did not run due to one of the constraints in the task definition |
0x80041326 | SCHED_E_TASK_DISABLED | Task is disabled |
0x80041327 | SCHED_E_TASK_NOT_V1_COMPAT | Task has properties that are not compatible with earlier versions of Windows |
0x80041328 | SCHED_E_START_ON_DEMAND | Task's settings do not allow the task to start on demand |
0x8007010B | The start in folder path is invalid | |
0x800704DD | The service is not available (is Run only when an user is logged on checked?) | |
0xC000013A | The task was terminated, user pressed Ctrl+C | |
0xC06D007E | Unknown software exception |
The above was sourced from...
- http://msdn.microsoft.com/en-us/library/aa383604
- http://ict.ken.be/scheduled-task-exit-result-and-error-codes.aspx
Other scheduler errors...
- Error 2147943712
- You're trying to save a task that wants to save credentials (maybe because you want the task to run even when the user is logged off), but credential saving has been disabled by a GPO.
- Error 2147943785
- Logon failure: the user has not been granted the requested logon type at this computer. Grant the user log on as a batch job rights in Local Security Policy, User Rights Assignment
Extend Partition Fails
Disk looks to have extended in disk manager, but file manager/windows explorer still show the old size
- Start
diskpart
from a command line - List the volumes, then select the appropriate one
list volume
select volume 2
- Extend the volume
extend filesystem
- If this fails, select the partition and extend
list partition
select partition 1
extend filesystem
- This can sometimes throw up disk errors, in which case you'll need to a check disk on the affected partition (if there are open file handles you'll either need to stop the applications or schedule after a reboot, and reboot)
- EG
chkdisk d: /f
- EG
- Then re-attempt the partition extension
Re-Add Server to Domain
Sometimes the domain membership of a server becomes broken, needing the server to be re-added to the domain. In order to perform you need...
- A domain administrator account
- Or at least a domain account with permissions to add/remove machines from the domain
- A local administrator account
- Or a domain account that has recently logged into the server, that has admin rights over it
If you don't have any account that can be a local administrator of the server, you'll need to break into your server. There are utilities on the web that let you boot to a recovery CD/ISO, and overwrite the admin password. I haven't used any of these since NT4 days, so can't comment how capable they are today.
- Log into the server as a local admin
- If you don't have the password, but have logged on previously with a domain account that has admin rights over the server
- Disconnect the server from the network
- Login with the domain account that has admin rights (this forces the server to use locally cached credentials, rather than validating with the domain)
- Reconnect to network
- Change the local admin password to something you'll remember (you must do this otherwise you'll lose access once the machine is off the domain!)
- If you don't have the password, but have logged on previously with a domain account that has admin rights over the server
- Go to System Properties and record the name of the current domain
- Then change the domain membership to Workgroup (provide a dummy workgroup name, WORKGROUP is the defalt for new machines)
- Provide a domain account that has rights to remove a server from the domain
- If successful you should get a pop-up stating Welcome to the WORKGROUP workgroup, and then a prompt to restart
- Go back into System Properties and change the domain membership to Domain, supplying the original domain name
- Provide a domain account that has rights to add a server to the domain
- If successful you should get a pop-up stating Welcome to the <domain> domain, and then a prompt to restart