feat: FS-E strict filesystem mode - ext4 rw driver, FAT32 big-disk fix, forced re-login
- CODE/dsk/ext4.c: minimal full ext4 read/write (GPT probe, feature gate, extent depth 0/1 rw, block/inode alloc-free, dir insert, write-verify); boot selftest PASS on p2. Unsupported features panic (FS-E2x), zero fallback. - DSK fat32 write: on-demand FAT entry RMW + chunked free-cluster scan (fixes "no free clusters" on 5.3G ESP); rec_len shrink offset (+4) and chunk alignment fixes. USER.CONF write-verify ok, firstInit flip ok. - First-boot: wizard -> persist -> forced login (FS-E06 if skipped/failed) -> desktop. login.elf loaded via system/user/use fallback. - FirstInit network page: Connect now panics NET-E01 (no wlan stack); Save (config only) is the only path forward. - FirstInit/DSK fatal: ohMyLogo lotus fatal screen (NET-E01 / FS-E series). - Boot screen: Logo.png image removed, "DESHAB P01" text centered only; dcp/xj logos regenerated from TEXTURES/. - run_qemu.bat: main GPT image on SATA ide.0 (AHCI provider must see ext4).
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
/* ext4.h — minimal full read-write ext4 driver for DSK (p2 data partition)
|
||||
*
|
||||
* 严格错误策略:任何错误(挂载失败/feature 不支持/IO 失败/校验不符)
|
||||
* 一律经 fatal(sym) 整屏 panic 停机,错误码体系 FS-E1x / FS-E2x。
|
||||
*
|
||||
* 支持范围(mkfs.ext4 由 pack_system_image.sh 以 -O
|
||||
* ^has_journal,^metadata_csum,^64bit,^resize_inode -b 4096 -I 256 创建):
|
||||
* - 4K blocksize、inode 256B、无 journal、无 metadata_csum、无 64bit
|
||||
* - extent 树(depth 0/1)读写
|
||||
* - 块位图/inode 位图分配与回收
|
||||
* - 线性目录项查找/插入/扩展
|
||||
*/
|
||||
#ifndef DSK_EXT4_H
|
||||
#define DSK_EXT4_H
|
||||
|
||||
typedef unsigned char ext4_u8;
|
||||
typedef unsigned short ext4_u16;
|
||||
typedef unsigned int ext4_u32;
|
||||
typedef unsigned long long ext4_u64;
|
||||
|
||||
typedef int (*ext4_block_read_fn)(unsigned int index, ext4_u64 lba,
|
||||
ext4_u32 count, void *buf);
|
||||
typedef int (*ext4_block_write_fn)(unsigned int index, ext4_u64 lba,
|
||||
ext4_u32 count, const void *buf);
|
||||
|
||||
/* 挂载 p2 ext4 分区(GPT 探测 + superblock/feature 校验)。
|
||||
* 任何失败直接调用 fatal(sym) panic。成功返回 0。 */
|
||||
int ext4_mount(ext4_block_read_fn rd, ext4_block_write_fn wr,
|
||||
void (*fatal)(const char *sym), void (*logl)(const char *s),
|
||||
void (*logh)(const char *p, ext4_u64 v));
|
||||
|
||||
/* 按路径读文件("/system/deshab64/FUCK"),返回内部静态缓冲。
|
||||
* 任何失败 fatal。成功返回 0 并填充 out/size。 */
|
||||
int ext4_read_file(const char *path, ext4_u8 **out, ext4_u32 *size);
|
||||
|
||||
/* 按路径写文件(存在则覆写,不存在则创建)。
|
||||
* 写后自动回读逐字节校验,不符 fatal。成功返回 0。 */
|
||||
int ext4_write_file(const char *path, const ext4_u8 *data, ext4_u32 size);
|
||||
|
||||
/* 启动自检:读 /system/deshab64/FUCK + 写读校验 /dsk_ext4_rw.test。 */
|
||||
void ext4_boot_selftest(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user