Phoenix OS'in start.bat dosyası Prime OS için nasıl ayarlanır?

Katılım
7 Ocak 2019
Mesajlar
1.949
Çözümler
15
Daha fazla  
Cinsiyet
Erkek
Başlıkta yazıldığı gibidir, tek amacım ext4 olarak manuel kurduğum PrimeOS işletim sistemini Phoenix start.bat ile başlatmaktır, bunu legacy BIOS için uygun şekilde yapabilir misiniz?
Not: Ben Notepad++ ile düzenlemeye çalıştım fakat bazı kısımlarını düzeltmeyi başaramadım.

[CODE title="Phoenix start.bat (x86 için ayarlanmalı.)"]@echo off.
Setlocal Enabledelayedexpansion

set IsAddFunc=n
set PrimeOSID=0
set IsBootEFI=
set WinBit=

::========================================
::判断是否管理员运行,提权
::========================================
@echo off.

REM ________________________________________________________________

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' NEQ '0' (

echo 请求管理员权限...

goto UACPrompt.

) else ( goto gotAdmin )

:UACPrompt

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\phoenixgetadmin.vbs"

echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\phoenixgetadmin.vbs"

"%temp%\phoenixgetadmin.vbs"

exit /B

:gotAdmin

if exist "%temp%\phoenixgetadmin.vbs" ( del "%temp%\phoenixgetadmin.vbs" )

pushd "%CD%"

CD /D "%~dp0"

REM ________________________________________________________________

:: 判断启动方式,UEFI or Legacy.
for /f "tokens=2 delims=." %%i in ('bcdedit.exe^|findstr "winload"') do set IsBootEFI=%%i
if "%IsBootEFI%" == "exe" ( goto BootLegacy ) else ( goto BootUEFI )

::========================== Legacy Start ============================
::Legacy 方式入口,修改BCD
:BootLegacy

:: 查找 'bcdedit /enum' 中 "PrimeOS" 的位置.
set /a Count=0
for /f "tokens=1 delims=" %%i in ('bcdedit /enum') do (
set /a Count+=1
echo %%i | findstr "\<PrimeOS\>" > nul.
if !errorlevel! equ 0 (set /a PhoenixCount=Count-3)
)

:: 获取 "PrimeOS" 对于的ID.
set /a Count=0
for /f "tokens=1 delims=" %%i in ('bcdedit /enum') do (
set /a Count+=1
if !Count! equ !PhoenixCount! (set PrimeOSID=%%i)
)
for /f "tokens=2 delims= " %%i in ("!PrimeOSID!") do (set PrimeOSID=%%i)

:: 把"PrimeOS"的ID添加到一次性启动的列表中
bcdedit /bootsequence !PrimeOSID! /addfirst

:: 验证添加成功,跳到重启系统
for /f "tokens=2 delims= " %%i in ('bcdedit /enum ^| findstr "bootsequence"') do (
if %%i == !PrimeOSID! (
echo Next reboot will enter PrimeOS directly.
goto Reboot.
)
)

:: 没有完成,提示并退出
echo "Set Legacy boot sequence error, exit..."
goto exit_point.
::========================== Legacy End ============================

::========================== UEFI Start ============================
::UEFI 方式入口,修改Grub2
:BootUEFI

:: 判断Windows 32/64bit
if exist "%PROGRAMFILES(x86)%" (set WinBit=64) else (set WinBit=32)

:: 挂载ESP分区.
mountvol v: /S
if %errorlevel% neq 0 (echo Mount ESP error! && goto exit_point)

:: 检查默认设置参数是否存在.
if "%WinBit%" == "32" ( goto AddFunc32 )
if "%WinBit%" == "64" ( goto AddFunc64 )

:: 32位UEFI更新引导.
:AddFunc32
::findstr "next_entry" v:\EFI\PrimeOS\Boot\grub.cfg >nul 2>&1 && goto add_env_point.
copy v:\EFI\PrimeOS\Boot\bootia32.efi "%~dp0"\config\bootia32.efi.phoenix.bak
copy v:\EFI\Boot\bootia32.efi "%~dp0"\config\bootia32.efi.boot.bak
copy "%~dp0"\config\bootia32.efi v:\EFI\PrimeOS\Boot\bootia32.efi
copy "%~dp0"\config\bootia32.efi v:\EFI\Boot\bootia32.efi

copy v:\EFI\PrimeOS\Boot\grub.cfg "%~dp0"\config\grub.cfg.bak
copy "%~dp0"\config\grub.cfg v:\EFI\PrimeOS\Boot\grub.cfg
goto add_env_point.

:: 64位UEFI更新引导.
:AddFunc64
::findstr "next_entry" v:\EFI\Boot\grub.cfg >nul 2>&1 && goto add_env_point.
copy v:\EFI\Boot\grub.cfg "%~dp0"\config\grub.cfg.bak
copy "%~dp0"\config\grub-x64.cfg v:\EFI\Boot\grub.cfg
mkdir v:\boot
mkdir v:\.disk
echo 'PrimeOS' > v:\.disk\info
echo 'PrimeOS' > v:\.disk\mini-info

:: 设置下次的默认启动项为PrimeOS.
:add_env_point
if "%WinBit%" == "32" ( copy "%~dp0"\config\grubenv v:\EFI\PrimeOS\Boot\grubenv )
if "%WinBit%" == "64" ( copy "%~dp0"\config\grubenv v:\EFI\Boot\grubenv )
echo Next reboot will enter PrimeOS directly.

:: 卸载ESP分区.
mountvol v: /d
::========================== UEFI End ============================

:: 重启.
:Reboot
shutdown -r -t 1

:exit_point
[/CODE]

Ayrıca şu dosyaları da düzenlemek gerekiyor.

[CODE title="grub-x64.cfg (x86 için ayarlanmalı.)"]set timeout=5
set gfxmode=1024x768
#terminal_output gfxterm.
set default=Windows

if [ -s /EFI/Boot/grubenv ]; then.
set have_grubenv=true
load_env.
fi.

if [ "${next_entry}" ]; then.
set default="${next_entry}"
set next_entry=
save_env next_entry.
set timeout=0
fi.

menuentry 'Windows' {
search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Phoenix OS" {
search --file --set=root /EFI/PrimeOS/kernel
linux /EFI/PrimeOS/kernel quiet root=/dev/ram0 androidboot.hardware=android_x86 SRC=/PrimeOS vga=788
initrd /EFI/PrimeOS/initrd.img
}
[/CODE]

Bu da son dosya:

[CODE title="grub.cfg (x86 için ayarlanmalı.)"]set timeout=5
set gfxmode=1024x768
#terminal_output gfxterm.
set default=Windows

if [ -s /EFI/PrimeOS/Boot/grubenv ]; then.
set have_grubenv=true
load_env.
fi.

if [ "${next_entry}" ]; then.
set default="${next_entry}"
set next_entry=
save_env next_entry.
set timeout=0
fi.

menuentry 'Windows' {
search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Phoenix OS" {
search --set=root --file /EFI/PrimeOS/kernel
linux /EFI/PrimeOS/kernel quiet root=/dev/ram0 androidboot.hardware=android_x86 SRC=/PrimeOS vga=788
initrd /EFI/PrimeOS/initrd.img
}
[/CODE]

1640209636398.png


Ve başlatıcı olarak atanacağı yer, .bat çalıştırıldığında bilgisayarı yeniden başlatıp, direkt PrimeOS adlı dosyayı C diskinden bulup Android adlı Boot'a giriş yapmalı, böylece hiç uğraşmadan Android'e giriş yapabileceğim.

1640209692755.png


PrimeOS adlı dosyada burada, Bootice'den bu dosya çalıştırılıp L diskine sinyal gönderiyor, böylece Prime OS çalışıyor.

1640209901798.png


Bunu neden mi istiyorum? PrimeOS normalde X86 desteği yok, ben bir method ile legacy BIOS'a yani X86 sisteme kurdum, ve Windows 7/11'de bende bu method ile kurulu X64 olarak, işte sistem. Sfs sürekli çöküyor (güç kablosunu çektiğim andan itibaren), işte bende yedeğini dosyaya atıp tekrar kurmak zorunda kalıyorum, o sırada Windows'a dön, dosyayı aktar, aktardıktan sonra yeniden başlat, PrimeOS'un bootlandığı Android'i seç, açılmasını bekle derken çok uzun sürüyor, en azından yeniden başlatma süresinden biraz azaltmak amacıyla böyle bir başlatıcı.bat istiyorum. @eenneess0 ne düşünüyorsun bu konuda, yapılabilir mi? Dediğim .bat olayı.
 
Son düzenleme:
Hocam bütün çıkan yazıları kopyalayıp buraya bu şekilde atsanız daha iyi olur.

[CODE title="Metin"]Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume6
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale tr-TR
inherit {globalsettings}
flightsigning Yes
default {current}
resumeobject {3a73dd7e-5ff4-11ec-b669-ab4f3916ae6d}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 5

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows 11
locale tr-TR
inherit {bootloadersettings}
recoverysequence {3a73dd80-5ff4-11ec-b669-ab4f3916ae6d}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
flightsigning Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {3a73dd7e-5ff4-11ec-b669-ab4f3916ae6d}
nx OptIn
bootmenupolicy Standard[/CODE]
 
Kod:
C:\Windows\system32>bcdedit

Windows Önyükleme Yöneticisi
--------------------
tanımlayıcı:           {bootmgr}
description             Windows Boot Manager
locale                  tr-TR
default                 {current}
displayorder            {current}
                        {36586fcf-8a53-46cc-81b2-3d878be6a525}
                        {55c367fa-9b7b-4565-8f8c-97038b98f1e8}
timeout                 15

Windows Önyükleme Yükleyicisi
-------------------
tanımlayıcı:           {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  tr-TR
inherit                 {bootloadersettings}
                        {globalsettings}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {d1906036-3585-4e67-95e6-f81bb5922f4d}

Windows Önyükleme Yükleyicisi
-------------------
tanımlayıcı:           {36586fcf-8a53-46cc-81b2-3d878be6a525}
device                  partition=E:
path                    \Windows\system32\winload.exe
description             Windows 11
locale                  tr-TR
inherit                 {bootloadersettings}
                        {globalsettings}
osdevice                partition=E:
systemroot              \Windows
resumeobject            {94e466e0-ff71-4814-b526-85a3848de2be}

Gerçek Mod Önyükleme Kesimi
---------------------
tanımlayıcı:           {55c367fa-9b7b-4565-8f8c-97038b98f1e8}
device                  partition=C:
path                    \PrimeOS
description             Android

C:\Windows\system32>
 
Bunu StartPrimeOS.bat olarak kaydedip deneyin bakalım.

[CODE title="StartPrimeOS.bat"]TITLE StartPrimeOS
bcdedit /default {55c367fa-9b7b-4565-8f8c-97038b98f1e8}
bcdedit /timeout 0
shutdown /r /t 0[/CODE]
 
Bunu StartPrimeOS.bat olarak kaydedip deneyin bakalım.

[CODE title="StartPrimeOS.bat"]TITLE StartPrimeOS.
bcdedit /default {55c367fa-9b7b-4565-8f8c-97038b98f1e8}
bcdedit /timeout 0
shutdown /r /t 0[/CODE]

İşin uzun sürer diye düşünüp oyunu açmıştım 😅 bu oyun benim favorim, hasatasıyım resmen bu oyunun 762 kere bitirdim, hâlâ sıkılmadım, toplam oynama sürem 300 saat falan 😋

1640213128658.png
 

Technopat Haberler

Yeni konular

Geri
Yukarı