Cixert Posted Friday at 06:33 AM Posted Friday at 06:33 AM (edited) According to Microsoft specifications, native 4K drives with logical sectors of 4096 bytes (not 512e) are only supported starting with Windows Eight. However, if I'm currently working with MBR +2 TiB hard drives with USB adapters that convert the logical sector from 512e to 4096 bytes, why won't Windows XP read native 4K drives as SATA-connected data drives? I understand that the BIOS will have to be prepared to recognize them, but otherwise, I don't understand the problem. Although it is true that GPT drives with the Paragon driver report logical sectors as 512 bytes and physical sectors as 512 bytes, even though their physical sectors are 4096 bytes. Official Microsoft info: https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/support-policy-4k-sector-hard-drives I also have to say that in theory FAT16x was supported by Windows NT 4.0 with logical sectors up to 8192 bytes to increase its capacity up to 16 GiB Edited Friday at 06:34 AM by Cixert
Kmuland Posted Friday at 08:56 AM Posted Friday at 08:56 AM Im using some external HDs (WD) larger than 4TB in XP x64... and works perfectly. The only drawback is that you have to wait about a minute to the computer recognize the attached HD... then the drive works perfectly
Klemper Posted Friday at 01:32 PM Posted Friday at 01:32 PM Booting from such a drive, no. Storing allegedly pirated content, such as films, games and 2160p WebRips, on an external drive with 4Kn sectors, yes. https://en.wikipedia.org/wiki/Advanced_Format 1
user57 Posted Friday at 05:13 PM Posted Friday at 05:13 PM (edited) maybe it is time that someone look the published codes from microsoft for example the WRK so we could tell why i had left open my fault saying 4 times 512 = 4 k, but that isnt right - it is 8 times however only cixert fixed that one up if FAT32ex on xp can acseed that 2 TB limit and set a sector size, it might be possible if not its not hard to write a loop that actually parse 512 bytes 8 times on the other hand it would raise question to that classical saying "32 bit are limited to 4 gb" according to this logic 32 bit cant address a HDD bigger then 4 gb the overlappend structure just use two dwords (aka 32 bit * 2 = 64 bits) if i continue to talk like this i can only make speculations but lets say it would be able to pass the size of a dword it would not mean that it can pass the 512 sector as we know it can make 512 sectors with 4 gb (aka 2 tb data) but such things you can read out of the microsoft code/either disassembled/debugged or the published code - it is certainly some work - if someone actually know what the problem is it would be faster then just gambling around i actually wrote data to the disc on i/o level but that memory is far to old to get it back, it actually lack like the most part of it, i just remember a few I/O ports like 1f4 and the writes they are either dword (32 bit) word (16 bit) byte (8 bit) this is not a problem as you just give it a loop to write if you have lets say 1024 bits to write you use for the 32 bit writes (1024/32 = downrounded 33 times) 33 * 32 = 1000 then you still have to write 24 bytes , you can either do this with 8 bit writes or one 16 bit write and one 8 bit write 24 / 16 = 1 after that you have the last byte 8 / 8 = 1 the hardware actually transfer that code into a "next code" this next code dont really care if it was 33 + 1 + 1 writes, it rather finds the data that wants to be progressed to get this information out you need time it took 2 weeks just to compile chrome up another 2 weeks for getting the things around that that makes at least 4 weeks to dig into this - what time i dont have at the moment sorry maybe thats the right spot ? it definatly has low and high parts https://wiki.osdev.org/ATA_PIO_Mode#Registers quote: ";ATA PI0 33bit singletasking disk read function (up to 64K sectors, using 48bit mode)" quote2: "Note on the "magic bits" sent to port 0x1f6: Bit 6 (value = 0x40) is the LBA bit. This must be set for either LBA28 or LBA48 transfers." quote3: " An example: Send 0x40 for the "master" or 0x50 for the "slave" to port 0x1F6: outb(0x1F6, 0x40 | (slavebit << 4)) outb (0x1F2, sectorcount high byte) outb (0x1F3, LBA4) outb (0x1F4, LBA5) outb (0x1F5, LBA6) outb (0x1F2, sectorcount low byte) outb (0x1F3, LBA1) outb (0x1F4, LBA2) outb (0x1F5, LBA3) " it is written in assembly to me it seems to have 3 words (word = 16 bit) that address a 48 bit offset (aka LBA48 / 16+16+16=48 (it seems low, mid and high/LBAlo, LBAmid, and LBAhi) if it is like that it isnt hard either you probaly have to set the right settings and address the 48 bits, its different from the paging mechanism (for ram) what actually has 4k pages, 4 megabyte pages, maybe segments, 64 bit PTE/PDE entrys (that can be done on 32 bit, one example is that CMPXCHG8B command in 32 bit mode it can set 64 bit at once (atomic) ) another atmoic way to store 64 bit in 32 bit mode would would be to use the FPU unit the FPU unit can store 64 bits in an offset - to do so you could just put the two 32 bit values to an offset and storing those on the FPU , from the FPU you then store that value to the requied offset (aka where the PTE´s and PDE´s are at), in short talk you can use the FPU as integer if you do it rightm or even "just as memory storage for more then 32 bit" to make it via fpu unit FST / FSTP would be an example the opcodes (these are the ones who have a memory location, could be used) DD /2 (FST), or DD / 3 (FSTP) can write 64 bits to an offset: https://tizee.github.io/x86_ref_book_web/instruction/fst_fstp.html cmpxchg8b: https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg8b but jumping around from one project to a other just kills not only 1 project it kills both of projects, you guys are on the point Edited 13 hours ago by user57 1
Cixert Posted Friday at 05:16 PM Author Posted Friday at 05:16 PM (edited) Sorry, that I have not explained well. I know Windows XP can work as data disk with hard drives with 4K physical sector and logical sector 512E (not for booting). My question is whether Windows XP can work with hard drives with 4K physical sector and also 4KN logical sector. The majority of hard drives that exceed the 2 TIB are 4K-512E, but some are 4K-4KN which would supposedly imply breaking the 2 Tib barrier of the Master Boot Record and also of GPT with the Windows 2003 drivers. Does any user have a 4K-4KN hard disk? how to recognize a hard disk before buying.... https://support-en.wd.com/app/answers/detailweb/a_id/20968/ Edited Friday at 05:33 PM by Cixert
Klemper Posted 6 hours ago Posted 6 hours ago So we may safely assume, no support for XP was ever inttended. Look here, https://aidanfinn.com/?p=13179 "Why Windows Server 2012 Hyper-V VHDX 4K Alignment Is So Important The current VHD driver assumes a physical sector size of 512 bytes and issues 512-byte I/Os, which makes it incompatible with these disks. As a result, the current VHD driver cannot open VHD files on physical 4 KB sector disks. Hyper-V makes it possible to store VHDs on 4 KB disks by implementing a software RMW algorithm in the VHD layer to convert the 512-byte access and update request to the VHD file to corresponding 4 KB accesses and updates."
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now