[Hi8 Pro] [Tutorial] Make Dual Boot HI8 Pro -> Single Boot Windows

Hi all,
I just found out that there is an easy way to convert your chuwi hi8 pro dual boot tablet to a windows only tablet with one big ~28GB C: drive.

Here is what I did to archieve this:

OPTIONAL: (Remove OS Selection Screen when booting)

  • Find the SwitchNOW.exe in the hidden recovery folder (See here: https://forum.chuwi.com/forum.php … =5208&fromuid=39061)
  • Run SwitchNOW.exe, a prompt will pop up asking you if you want to boot to Android. Select NO .
  • Another promt will pop up, select the Disable radio button at “Boot menu configuration” and exit the program.

This will delete android and will reinstall windows onto one big partition.

PS: You can always get Android/Dual Boot back using this tutorial: https://forum.chuwi.com/forum.php … ypeid%26typeid%3D17

PSS: I am pretty sure this works for other tablets too! All windows firmwares come with this Main.cmd script. This script always has two installation routines, one for single OS and one for dual OS. You only have to edit the script so it executes the single OS routine instead of the dual OS. In most scripts you only need to change a variable (linke on hi8 pro, see above), in some other scripts you have to modify a goto statement.

WARNING: Make sure to back up your data bevore performing this! I am not responisble for any damage or data loss!

1 Like

Hey Management,

Thanks so much for posting this - have been looking for an easy way to do this.

However, I’m unable to find the line “set OS_Attributes=2” in the main.cmd file - so I’m stuck.

Below is a copy of the main.cmd file - anything you can do to help would be most appreciated…


@echo off
@rem This script is called by x:\Windows\System32\Startnet.cmd - WinPE
@echo.
@echo.
@echo.
@echo.
@rem *******************************************************************
@rem FLASH_BIOS=1 Auto flash BIOS / FLASH_BIOS=0 Do not auto flash BIOS
@rem *******************************************************************
@echo.

set FLASH_BIOS=0

@echo.
@echo Running Intel Optimization powercfg for improved imaging times
@echo.
@echo call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
@echo.
@echo.
@echo.
@rem *****************************************************************
@rem List all the disks, then search the volumes of each one to see
@rem which disks may have “Winpe” in the label. We will ignore that
@rem disk and use the first disk without the Winpe label that we find.
@rem *****************************************************************
@echo.>x:\Listdisk.txt
@echo list disk>>x:\Listdisk.txt
@echo exit>>x:\Listdisk.txt
@echo call diskpart /s x:\Listdisk.txt
call diskpart /s x:\Listdisk.txt>x:\Disks.txt
@echo.
@rem Set Disk equal to blank to start
set disk=
@echo.
@rem
@rem This line will write a diskpart script to select the disk and detail it’s contents.
@rem We use this output to find a disk that does NOT have Winpe as the volume label.
@rem That disk will have the OS installed to it. This way you can exclude USB from diskpart.
@rem
@rem This works around the issue where the USB key is sometimes enumerated as disk 0 and the
@rem SSD is disk 1.
@rem
for /f “skip=8 tokens=2” %%A in (x:\Disks.txt) do (
@echo sel disk %%A>x:\Par.txt
@echo det disk>>x:\Par.txt
@echo exit>>x:\Par.txt
if NOT “%%A”==“DiskPart…” call :ListPar %%A
)
if %Disk%=="" echo No disk found without a volume label of “Winpe”&& set disk=0
@echo Using Disk “%Disk%”
@echo.
@echo *****************************************************************
@rem Map drive letter for Install.wim and Winre.wim
@echo *****************************************************************
@rem Create an output file containing all the drive letters
@echo.>x:\listVol.txt
@echo list volume>>x:\listVol.txt
@echo exit>>x:\listVol.txt
@echo call diskpart /s x:\listVol.txt
call diskpart /s x:\Listdisk.txt>x:\Output.txt
@echo call diskpart /s x:\listVol.txt>x:\Output.txt
diskpart /s x:\listVol.txt>x:\Output.txt
@echo.
@rem Go through each drive letter, looking for the images\Install.txt file
for /f “skip=8 tokens=3” %%A in (x:\Output.txt) do (
if exist %%A:\images\install.txt set InstallPath=%%A:\images&& echo “Found device with images folder and install.txt file”
)
@echo.
@echo.
@echo.
@echo *****************************************************************
@echo Checkup SingleOS or DualOS or whether exist windows partiton
@echo *****************************************************************
@rem create diskpart script for search windows partitions from emmc disk
@echo.>x:\ListPar.txt
@echo select disk “%Disk%” >>x:\ListPar.txt
@echo list partition >>x:\ListPar.txt
@echo exit >>x:\ListPar.txt
@echo.
@rem run diskpart script
diskpart /s x:\ListPar.txt >x:\eMMCPar.txt
@echo.
@rem SingleOS / DualOS switch
find “Partition 6” x:\eMMCPar.txt >nul
if %ERRORLEVEL% NEQ 0 Goto :SingleOS
@rem ensure it’s DualOS,and check whether exist windows partition,if not:create the new windows partition
find “Partition 12” x:\eMMCPar.txt >nul
if %ERRORLEVEL% NEQ 0 Goto :DualOS
@echo.>x:\checkpart.txt
@echo select disk “%Disk%”>>x:\checkpart.txt
@echo list partition>>x:\checkpart.txt
@echo exit>>x:\checkpart.txt
@echo call diskpart /s x:\checkpart.txt>x:\outpar.txt
call diskpart /s x:\checkpart.txt>x:\outpar.txt
@echo.
@echo.>x:\DelPar.txt
@echo select disk “%Disk%”>>x:\DelPar.txt
for /f “skip=21 tokens=2” %%A in (x:\outpar.txt) do (
if %%A NEQ DiskPart… echo select partition %%A>>x:\DelPar.txt && echo delete partition override>>x:\DelPar.txt
)
echo exit>>x:\DelPar.txt
diskpart /s x:\DelPar.txt
Goto :DualOS

:SingleOS
@echo.
@echo This is a SingleOS!
@echo.
@echo.
:UEFImode
@echo.
@rem ************************
@rem UEFI SECTION
@rem ************************
@echo The PC is booted in UEFI mode
@echo.>x:\winpart.txt
@echo select disk “%Disk%”>>x:\winpart.txt
@echo clean>>x:\winpart.txt
@echo convert gpt>>x:\winpart.txt
@echo create partition efi size=100>>x:\winpart.txt
@echo format quick fs=fat32 label=“System”>>x:\winpart.txt
@echo assign letter=“S”>>x:\winpart.txt
@echo create partition msr size=16>>x:\winpart.txt
@echo create partition primary>>x:\winpart.txt
@echo format quick fs=ntfs label=“Windows”>>x:\winpart.txt
@echo assign letter=“W”>>x:\winpart.txt
@echo shrink desired=800>>x:\winpart.txt
@echo create partition primary>>x:\winpart.txt
@echo format quick fs=ntfs label=“Recovery”>>x:\winpart.txt
@echo assign letter=“R”>>x:\winpart.txt
@echo set id=“de94bba4-06d1-4d40-a16a-bfd50179d6ac”>>x:\winpart.txt
@echo gpt attributes=0x8000000000000001>>x:\winpart.txt
@echo exit>>x:\WinPart.txt
@echo Winpart.txt now contains…
@echo.
type x:\winpart.txt
@echo.
@echo.
@echo *****************************************************************
@echo Setting up the partition table
@echo *****************************************************************
@echo call diskpart /s x:\winpart.txt
diskpart /s x:\winpart.txt
@echo.
@echo.
@echo.
@echo.
@rem Check InstallPath was found and there are images in it.
if NOT EXIST %InstallPath%\Install.wim echo “Install.wim NOT found.” && goto :Error
@echo Install.wim FOUND at %InstallPath%\images\install.wim
@echo.
@echo.
@echo.
@echo *****************************************************************
@rem Switches to the USB disk
@rem Create folders on local (eMMC) disk and copy files from USB disk
@echo *****************************************************************
@echo.
@echo Making directories…
md w:\recycler\scratch
if %errorlevel% NEQ 0 echo “Failed to make w:\recycler\scratch directory” && goto :error
@echo.
md r:\recovery\windowsre
if %errorlevel% NEQ 0 echo “Failed to make m:\recovery\windowsre directory” && goto :error
@echo.
@echo.
@echo *****************************************************************
@echo Applying the Windows image from the USB
@echo *****************************************************************
@echo call dism /apply-image /imagefile:"%InstallPath%\Install.wim" /index:1 /applydir:w:\ /compact /scratchdir:“w:\recycler\SCRATCH
call dism /apply-image /imagefile:”%InstallPath%\Install.wim" /index:1 /applydir:w:\ /compact /scratchdir:"w:\recycler\SCRATCH
if %errorlevel% NEQ 0 echo “Failed to apply image to w:” && goto :error
@echo.
@echo *****************************************************************
@echo Rund SingleInstance
@echo *****************************************************************
@echo.
if EXIST W:\Recovery\Customizations\USMT.ppkg dism /Apply-CustomDataImage /CustomDataImage:W:\Recovery\Customizations\USMT.ppkg /ImagePath:W:\ /SingleInstance
@echo *****************************************************************
@rem Move WinRE to Recovery Partition
@echo *****************************************************************
@echo.
@echo Modifying attributes of winre.wim so we can move it.
attrib w:\Windows\System32\recovery\winre.wim -s -h -a -r
@echo move w:\Windows\System32\recovery\winre.wim r:\recovery\windowsre
move w:\Windows\System32\recovery\winre.wim r:\recovery\windowsre
if %errorlevel% NEQ 0 echo “Failed to move winre.wim to r:\recovery\windowsre” && goto :error
@echo.
@echo reset attributes now
attrib r:\Recovery\Windowsre\winre.wim +s +h +a +r
@echo.
@echo.
@echo *****************************************************************
@echo Setting the boot environment
@echo *****************************************************************
@echo call w:\WINDOWS\SYSTEM32\BCDBOOT w:\WINDOWS /s s: /f all
w:\WINDOWS\SYSTEM32\BCDBOOT w:\WINDOWS /s s: /f all
if %errorlevel% NEQ 0 echo “Failed to set boot information” && goto :error
@echo.
@echo.
@echo.
@echo *****************************************************************
@echo Setting the recovery environment
@echo *****************************************************************
@echo w:\windows\system32\reagentc /SetREImage /Path r:\RECOVERY\WINDOWSRE /target w:\windows
w:\windows\system32\reagentc /SetREImage /Path r:\RECOVERY\WINDOWSRE /target w:\windows
if %errorlevel% NEQ 0 echo “Failed to set recovery information” && goto :error
@echo.
@echo xcopy W:\Recovery\OEM\sdbus.sys W:\Windows\System32\Drivers\ /y
xcopy W:\Recovery\OEM\sdbus.sys W:\Windows\System32\Drivers\ /y
if %errorlevel% NEQ 0 echo “Failed to Copy sdbus.sys” && goto :error
@echo.
attrib +H +R W:\Recovery
rmdir /s /q w:\recycler
if “%FLASH_BIOS%”==“1” GOTO :FLASH_BIOS
@echo *****************************************************************
@echo WIMboot image deployment COMPLETE. Type EXIT from Command
@echo Prompt to restart or turn off device.
@echo *****************************************************************
Wpeutil shutdown
color 2f
Goto :END

:DualOS
@echo.
@echo This is a DualOS!
@echo.
@echo.
@echo *****************************************************************
@echo Write the diskpart script now that we know what disk to use
@echo *****************************************************************
@echo.>x:\winpart.txt
@echo select disk “%Disk%”>>x:\winpart.txt
@echo select volume “0”>>x:\winpart.txt
@echo attributes volume set hidden>>x:\winpart.txt
rem @echo select volume “1”>>x:\winpart.txt
rem @echo attributes volume set hidden>>x:\winpart.txt
@echo create partition efi size=100>>x:\winpart.txt
@echo format quick fs=fat32 label=“System”>>x:\winpart.txt
@echo assign letter=“S”>>x:\winpart.txt
@echo create partition msr size=16>>x:\winpart.txt
@echo create partition primary>>x:\winpart.txt
@echo format quick fs=ntfs label=“Windows”>>x:\winpart.txt
@echo assign letter=“W”>>x:\winpart.txt
@echo shrink desired=800>>x:\winpart.txt
@echo create partition primary>>x:\winpart.txt
@echo format quick fs=ntfs label=“Recovery”>>x:\winpart.txt
@echo assign letter=“M”>>x:\winpart.txt
@echo set id=“de94bba4-06d1-4d40-a16a-bfd50179d6ac”>>x:\winpart.txt
@echo gpt attributes=0x8000000000000001>>x:\winpart.txt
@echo exit>>x:\WinPart.txt
@echo.
@echo winpart.txt now contains…
@echo.
type x:\winpart.txt
@echo.
@echo.
@echo *****************************************************************
@echo Setting up the partition table
@echo *****************************************************************
@echo call diskpart /s x:\winpart.txt
diskpart /s x:\winpart.txt
@echo.
@echo.
@echo.
@echo.
@rem Check InstallPath was found and there are images in it.
if NOT EXIST %InstallPath%\Install.wim echo “Install.wim NOT found.” && goto :Error
@echo Install.wim FOUND at %InstallPath%\install.wim
@echo.
@echo.
@echo.
@echo *****************************************************************
@rem Switches to the USB disk
@rem Create folders on local (eMMC) disk and copy files from USB disk
@echo *****************************************************************
@echo.
@echo Making directories…
md w:\recycler\scratch
if %errorlevel% NEQ 0 echo “Failed to make w:\recycler\scratch directory” && goto :error
@echo.
md M:\recovery\windowsre
if %errorlevel% NEQ 0 echo “Failed to make M:\recovery\windowsre directory” && goto :error
@echo.
@echo.
@echo *****************************************************************
@echo Applying the Windows image from the USB
@echo *****************************************************************
@echo call dism /apply-image /imagefile:"%InstallPath%\Install.wim" /index:1 /applydir:w:\ /compact /scratchdir:“w:\recycler\SCRATCH
call dism /apply-image /imagefile:”%InstallPath%\Install.wim" /index:1 /applydir:w:\ /compact /scratchdir:"w:\recycler\SCRATCH
if %errorlevel% NEQ 0 echo “Failed to apply image to w:” && goto :error
@echo.
@echo *****************************************************************
@echo Rund SingleInstance
@echo *****************************************************************
@echo.
if EXIST W:\Recovery\Customizations\USMT.ppkg dism /Apply-CustomDataImage /CustomDataImage:W:\Recovery\Customizations\USMT.ppkg /ImagePath:W:\ /SingleInstance
@echo *****************************************************************
@rem Move WinRE to Recovery Partition
@echo *****************************************************************
@echo.
@echo Modifying attributes of winre.wim so we can move it.
attrib w:\Windows\System32\recovery\winre.wim -s -h -a -r
@echo move w:\Windows\System32\recovery\winre.wim M:\recovery\windowsre
move w:\Windows\System32\recovery\winre.wim M:\recovery\windowsre
if %errorlevel% NEQ 0 echo “Failed to move winre.wim to M:\recovery\windowsre” && goto :error
@echo.
@echo reset attributes now
attrib M:\Recovery\Windowsre\winre.wim +s +h +a +r
@echo.
@echo.
@echo *****************************************************************
@echo Setting the boot environment
@echo *****************************************************************
@echo call w:\WINDOWS\SYSTEM32\BCDBOOT w:\WINDOWS /s s: /f all
w:\WINDOWS\SYSTEM32\BCDBOOT w:\WINDOWS /s s: /f all
if %errorlevel% NEQ 0 echo “Failed to set boot information” && goto :error
@echo.
@echo.
@echo.
@echo *****************************************************************
@echo Setting the recovery environment
@echo *****************************************************************
@echo w:\windows\system32\reagentc /SetREImage /Path M:\RECOVERY\WINDOWSRE /target w:\windows
w:\windows\system32\reagentc /SetREImage /Path M:\RECOVERY\WINDOWSRE /target w:\windows
if %errorlevel% NEQ 0 echo “Failed to set recovery information” && goto :error
@echo.
@echo xcopy W:\Recovery\OEM\sdbus.sys W:\Windows\System32\Drivers\ /y
xcopy W:\Recovery\OEM\sdbus.sys W:\Windows\System32\Drivers\ /y
if %errorlevel% NEQ 0 echo “Failed to Copy sdbus.sys” && goto :error
@echo.
attrib +H +R W:\Recovery
rmdir /s /q w:\recycler
if “%FLASH_BIOS%”==“1” GOTO :FLASH_BIOS
@echo *****************************************************************
@echo WIMboot image deployment COMPLETE. Type EXIT from Command
@echo Prompt to restart or turn off device.
@echo *****************************************************************、
Wpeutil shutdown
color 2f
Goto :END

:FLASH_BIOS
@echo.
@echo *****************************************************************
@echo Flash BIOS
@echo *****************************************************************
@echo.
@echo BIOS file FOUND at %WinPESource%Images\BIOS*.ROM
@echo.
xcopy /y %WinPESource%Images\BIOS*.ROM %WinPESource%Scripts\Tools
for /r “%WinPESource%Scripts\Tools” %%Z in (*.ROM) do (
ren “%%Z” “%%~na.fd”
)
if NOT EXIST %WinPESource%Scripts\Tools*.fd echo “Can not find the BIOS file” && goto :error
@REM Flash BIOS
%WinPESource%Scripts\Tools\H2OFFT-W.exe
Del /q %WinPESource%Scripts\Tools*.fd
if %errorlevel% NEQ 0 echo “Failed to flash BIOS” && goto :error
@echo *****************************************************************
@echo WIMboot image deployment COMPLETE. Type EXIT from Command
@echo Prompt to restart or turn off device.
@echo *****************************************************************
color 2f
Goto :END

:ERROR
@echo.
@echo An error has been detected.
color 4f
@echo.
goto :END

:ListPar
@REM This section is to bring a disk number and use it to List Partitions
@echo.
set TempDisk=%1
diskpart /s x:\Par.txt>x:\ParOutput.txt
for /f “skip=24 tokens=3” %%A in (x:\ParOutput.txt) do (
if /i “%%A”==“no” set Disk=%TempDisk%
)
for /f “skip=26 tokens=4” %%A in (x:\ParOutput.txt) do (
if /i NOT “%%A”==“Winpe” set Disk=%TempDisk%
)
Goto :EOF

:END
@rem
@rem Get finish time so we can evaluate total WinPE phase time.
@rem
call |time>x:\StopTime.txt
@rem
@rem Now parse both files to display the Start and Finish Time
@rem
@echo.
@echo.
for /f “tokens=5” %%A in (x:\starttime.txt) do echo Script Start Time is %%A
for /f “tokens=5” %%A in (x:\stoptime.txt) do echo Script Stop Time is %%A
@echo.