feat: Phase 1 网络端到端打通 + FirstInit/Login/DevMode 完善
- 用户态共享网络协议栈 CODE/tools/net_stack.h(eth/ARP/IPv4/ICMP/UDP-DNS/TCP static inline,轮询模型) - shell 内建 ping/curl/run 命令;ping.elf/curl.elf 对齐 net_stack.h 真实协议栈 - shell dev_mode 串口镜像(g_serial_mirror)便于自动化验证 - DSK 启动流程:firstInit.txt 双行格式(firstInit + dev_mode),dev_mode=1 触发 shell 自动回归测试 - FirstInit 完成→持久化 USER.CONF + 翻转 firstInit 0->1(保留 dev_mode) - firstInit=1 时 DSK 加载 login.elf 进行用户选择 + 密码校验后再进 desktop - 新增 CODE/login/ 登录应用、CODE/DKM/dkm_shared.h、Logo.png - ahci/e1000/virtio_net/fat32/console_fb 驱动更新;utsm serial/block/dsk_loader 调整 - build.ps1 打包 ping.elf/curl.elf 进 SATA FAT32 根目录 - 移除 CODE/tools/bash(与 shell.elf 重复)
This commit is contained in:
@@ -93,12 +93,12 @@ function Get-Crc32([byte[]]$Data) {
|
||||
}
|
||||
|
||||
function Test-ShortFatName([string]$Name) {
|
||||
if ($Name -match '[a-z]') { return $false }
|
||||
if ($Name -cmatch '[a-z]') { return $false }
|
||||
$parts = $Name.Split('.')
|
||||
if ($parts.Count -gt 2) { return $false }
|
||||
if ($parts[0].Length -lt 1 -or $parts[0].Length -gt 8) { return $false }
|
||||
if ($parts.Count -eq 2 -and $parts[1].Length -gt 3) { return $false }
|
||||
return $Name -match '^[A-Z0-9_\$%''\-@~`!\(\)\{\}\^#&]+(\.[A-Z0-9_\$%''\-@~`!\(\)\{\}\^#&]+)?$'
|
||||
return ($Name -cmatch '^[A-Z0-9_]+$') -or ($Name -cmatch '^[A-Z0-9_]+\.[A-Z0-9_]+$')
|
||||
}
|
||||
|
||||
function New-ShortFatName([string]$LongName, $Used) {
|
||||
@@ -513,6 +513,24 @@ if (-not (Test-Path $FirstInitOutput)) {
|
||||
}
|
||||
Write-Host "[build] FirstInit Output: $FirstInitOutput"
|
||||
|
||||
$LoginDir = Join-Path $Root 'CODE\login'
|
||||
$LoginOutput = Join-Path $SystemDir 'system\user\use\login.elf'
|
||||
|
||||
Write-Host '[build] Building login.elf...'
|
||||
try {
|
||||
& $make -C "$LoginDir" -f MAKEFILE "CC=$clang" "LD=$lld"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "make login failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
}
|
||||
finally {
|
||||
}
|
||||
|
||||
if (-not (Test-Path $LoginOutput)) {
|
||||
throw "login build did not produce $LoginOutput"
|
||||
}
|
||||
Write-Host "[build] login Output: $LoginOutput"
|
||||
|
||||
$MouseDir = Join-Path $Root 'CODE\mouse'
|
||||
$MouseOutput = Join-Path $SystemDir 'system\deshab64\mouse\mouseInit.elf'
|
||||
|
||||
@@ -589,7 +607,7 @@ Write-Host "[build] desktop Output: $DesktopOutput"
|
||||
$ToolsDir = Join-Path $Root 'CODE\tools'
|
||||
$ToolsOutDir = Join-Path $SystemDir 'system\deshab64\tools'
|
||||
|
||||
$toolApps = @('bash', 'editor', 'fileman', 'browser', 'curl', 'ping')
|
||||
$toolApps = @('editor', 'fileman', 'browser', 'curl', 'ping')
|
||||
|
||||
foreach ($tool in $toolApps) {
|
||||
$toolDir = Join-Path $ToolsDir $tool
|
||||
@@ -607,6 +625,9 @@ foreach ($tool in $toolApps) {
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host '[build] Building DKM framebuffer driver...'
|
||||
Build-DkmDriver (Join-Path $Root 'CODE\DKM\console_fb\console_fb.c') (Join-Path $SystemDir 'driver\console\console_fb.drv')
|
||||
|
||||
Write-Host '[build] Building DKM network drivers...'
|
||||
Build-DkmDriver (Join-Path $Root 'CODE\DKM\e1000\e1000.c') (Join-Path $SystemDir 'driver\net\e1000.drv')
|
||||
Build-DkmDriver (Join-Path $Root 'CODE\DKM\virtio_net\virtio_net.c') (Join-Path $SystemDir 'driver\net\virtio_net.drv')
|
||||
|
||||
Reference in New Issue
Block a user