File Write Testing
Testing persistent storage and file operations
Overview
guideXOS includes full file writing capabilities through its FAT filesystem implementation and IDE/SATA disk drivers. This guide covers testing file write operations to persistent storage devices.
guideXOS already has complete file writing support for IDE/SATA disks with FAT12/16/32 filesystems. No TAR write support (TAR is read-only by design), but FAT volumes fully support read/write operations.
Current Capabilities
? Working Features
| Component | Status | Notes |
|---|---|---|
| FAT12/16/32 | ? Full Support | Read, write, create, delete files |
| IDE/SATA Drivers | ? Full Support | Read and write operations |
| Long Filenames | ? Full Support | LFN (Long File Name) support |
| Sector Caching | ? Full Support | Performance optimization |
| USB Mass Storage | ?? Read-Only | Write support not yet enabled |
| TAR Archives | ? Read-Only | By design (archive format) |
| Low-Level Format | ? Not Yet | Use external tools to format |
Quick Start Guide
Follow these steps to test file writing in 5 minutes:
Step 1: Create Test Disk
On Linux or macOS:
# Create 100MB disk image
dd if=/dev/zero of=test.img bs=1M count=100
# Format as FAT32
mkfs.vfat -F 32 test.img
On Windows (PowerShell as Admin):
# Use VirtualBox or VMware to create virtual disk
# Then format from Windows Explorer as FAT32
Step 2: Attach to VM
- VMware: Add as IDE hard disk
- VirtualBox: Add as SATA controller
- QEMU: Use
-hda test.img
Step 3: Boot & Test
- Boot guideXOS
- Open File Write Test from Start Menu ? All Programs
- Select your disk (e.g., IDE0)
- Click "FAT Filesystem" button
- Watch for green [OK] messages
Expected Output
[TEST] FAT Filesystem Test on IDE0 (100MB)
--------------------------------------
Initializing FAT filesystem...
[OK] FAT filesystem initialized
Testing file write operations...
Writing test file: /guidexos_test.txt
[OK] File written successfully
Reading back test file...
[OK] File read successfully
Verifying file content...
[OK] Content verification successful!
Listing root directory...
Found 1 entries:
[FILE] guidexos_test.txt
Deleting test file...
[OK] Test file deleted
[RESULT] FAT filesystem test PASSED
Detailed VM Setup
VirtualBox Configuration
- Open VM Settings ? Storage
- Add SATA or IDE controller if not present
- Click "Add Hard Disk" ? Create new VDI
- Set size to 100MB (sufficient for testing)
- Boot a live Linux CD or use Windows to format as FAT32
- Attach formatted disk and boot guideXOS
QEMU Command Line
qemu-system-x86_64 \
-cdrom guidexos.iso \
-hda test.img \
-m 2G \
-vga std
VMware Configuration
- VM Settings ? Add ? Hard Disk
- Choose IDE or SATA
- Create new virtual disk
- Set size to 100MB
- Use Windows or Linux to format as FAT32
- Boot guideXOS
Always use dedicated test disks! File write operations modify disk contents. Backup important data before testing on real hardware.
File Write Test Application
The built-in File Write Test application provides comprehensive testing capabilities:
Features
- Automatic Disk Detection - Finds all IDE/SATA disks
- Raw Sector Testing - Low-level read/write verification
- FAT Filesystem Testing - File creation, read, verify, delete
- Safe Testing - Restores original data after tests
- Color-Coded Logs - Easy to spot issues
- Format Information - Shows formatting options
Test Modes
1. Raw Sector R/W Test
Tests low-level disk I/O operations:
- Reads sector 2048 (safe area after boot sectors)
- Writes test pattern
- Verifies data matches
- Restores original data
2. FAT Filesystem Test
Tests complete file operations:
- Initializes FAT filesystem
- Creates test file
/guidexos_test.txt - Writes "Hello from guideXOS!" content
- Reads back and verifies
- Lists directory contents
- Deletes test file
3. Format Options
Displays information about formatting disks:
- FAT12 - For disks < 16MB
- FAT16 - For disks 16MB - 2GB
- FAT32 - For disks > 2GB
Troubleshooting
No Disks Found
Problem: Application shows "No disks found"
Solutions:
- Check VM settings - disk must be attached as IDE or SATA
- Use primary IDE controller (not secondary)
- Check console output at boot for IDE detection messages
- Try different VM software (QEMU vs VMware vs VirtualBox)
FAT Initialization Failed
Problem: "Could not initialize FAT filesystem"
Solutions:
- Disk must be pre-formatted as FAT12/16/32
- Use
mkfs.vfat -F 32 disk.imgon Linux - Use Windows Format tool (select FAT32)
- Check disk isn't corrupted
- Verify boot sector is valid
Write Failed
Problem: "Could not write sector" or "Could not write file"
Solutions:
- Check disk isn't write-protected
- Verify disk has free space
- Try raw sector test first to isolate issue
- Check for disk errors in VM logs
- Increase VM disk size if needed
USB Drive Read-Only
Problem: USB drives show as read-only
Solutions:
- This is expected - USB write support not yet implemented
- Use IDE/SATA disks for write testing
- USB write support planned for future release
Advanced Topics
Manual File Operations
You can also test file writing using the console:
# Switch filesystem to IDE disk
gx> mount /dev/ide0
# Create a test file
gx> echo "Hello World" > /test.txt
# Read it back
gx> cat /test.txt
# List files
gx> ls -l /
# Delete file
gx> rm /test.txt
Programmatic File Writing
Example C# code for file operations:
// Switch to IDE disk
Disk.Instance = IDE.Ports[0];
// Initialize FAT filesystem
var fat = new FAT();
File.Instance = fat;
// Write a file
string content = "Hello from guideXOS!";
byte[] data = new byte[content.Length];
for (int i = 0; i < content.Length; i++) {
data[i] = (byte)content[i];
}
fat.WriteAllBytes("/myfile.txt", data);
// Read back
byte[] readData = fat.ReadAllBytes("/myfile.txt");
// Verify
bool ok = true;
for (int i = 0; i < data.Length; i++) {
if (readData[i] != data[i]) {
ok = false;
break;
}
}
Console.WriteLine(ok ? "Success!" : "Failed!");
Raw Sector Writing
Low-level disk access example:
// Get IDE disk
var disk = IDE.Ports[0];
// Prepare 512-byte sector
byte[] buffer = new byte[512];
for (int i = 0; i < 512; i++) {
buffer[i] = (byte)(i % 256);
}
// Write to sector 2048 (safe area)
ulong sector = 2048;
unsafe {
fixed (byte* p = buffer) {
bool success = disk.Write(sector, 1, p);
Console.WriteLine(success ? "Write OK" : "Write Failed");
}
}
Testing on Real Hardware
Requirements:
- x86/x64 PC with legacy BIOS or CSM mode enabled
- IDE or SATA hard drive (dedicated test disk recommended)
- At least 512MB RAM (2GB recommended)
Steps:
- Burn guideXOS.iso to CD/DVD or create bootable USB
- Attach test disk with FAT partition
- Boot from CD/USB
- Use File Write Test application as normal
File write operations modify disk contents. Always use dedicated test hardware! Never test on disks containing important data without complete backups.
Future Enhancements
Planned features:
- USB Write Support - Enable writing to USB mass storage devices
- Low-Level Formatting - Implement FAT.Format() method
- Partition Management - Create/delete partitions programmatically
- NTFS Support - Read and write NTFS filesystems
- ext2/3/4 Support - Linux filesystem compatibility
- Journaling - Crash recovery for interrupted writes
- Write Caching - Performance optimization