dlz
dlz
元婴期 · 高手
元婴期 · 高手
  • UID26735
  • 注册日期2017-06-04
  • 粉丝11
  • 发帖数21
  • 威望924
  • 被喜欢75
  • 有效bug0
阅读:28696回复:69

[经验交流]玩转Android-x86(安装启动、个性定制、高级运用)-8.5更新2楼分区挂载代码支持多硬盘

楼主#
更多 发布于:2018-12-28 01:09

玩转Android-x86(安装启动、个性定制、高级运用)

安装篇
本文并不是一篇高大上的教程,只是本人多年来的玩机经验总结,以及在不同系统、不同机型遇到的问题解决备忘录,本着“团结、互助、分享”的精神,现把我的经验贴出来,旨在与机友交流,或起到抛砖引玉的作用。
PC安装Android-x86虽然不象实体手机(平板)那样有刷机ROOT变砖的风险,但仍然存在操作不当可能破坏原来的系统,导致重要的资料丢失或电脑不能正常启动而不得不重装系统,因此我们在一些关键的操作一定要充分理解并弄懂该操作的目的,以免造成不必要的麻烦。
下面就本人用的电脑安装不同的Android-x86过程,分享给大家供参考:

一、准备工作
1、硬盘准备,使用DiskGenius工具无损分区和调整各分区大小:
ThinkPad_x61:不支持UEFI启动,2G-RAM,500G固态硬盘,MBR格式四个主分区
   分区1-NTFS,64G,已安装Windows7
   分区2-NTFS,300G,资料存储
   分区3-Ext4,64G,安装Android-x86
   分区4-Ext4,所有剩余空间,安装Ubuntu-18.04
SurfacePro3:支持UEFI启动,8G-RAM,500G固态硬盘,GPT格式ESP+四个主分区
   分区1-FAT(ESP),1G,启动文件+Win8PE+Pmagic用于系统维护
   分区2-NTFS,64G,已安装Windows8.1ent
   分区3-NTFS,300G,资料存储
   分区4-Ext4,64G,安装Android-x86
   分区5-Ext4,所有剩余空间,安装Ubuntu-18.04
MacBookPro(15吋2015版):支持UEFI启动,16G-RAM,500G固态硬盘,GPT格式ESP+四个主分区
   分区1-FAT(ESP),1G,启动文件+Win8PE+Pmagic用于系统维护
   分区2-APFS,所有剩余空间,安装Apple_macOS
   分区3-NTFS,64G,安装Windows8.1ent
   分区4-Ext4,32G,安装Ubuntu-18.04
   分区5-NTFS,256G,资料存储,安装Android-x86
需要特别注意在准备硬盘时苹果电脑需要先用“时间机器”将macOS先备份(除非你不会动到APFS分区或想重新安装macOS,但备份一下有益无害)再用DiskGenius工具来定制硬盘,然后再用备份盘启动电脑恢复到指定的分区。按我的理解:通常macOS都是安装在第二个分区,也就是紧接着ESP的那个分区,保存重要资料的分区放在最后,中间的分区用来安装其它系统,这样做有个好处,就是紧接着macOS的空闲空间可以轻松被macOS回收和重新划分出空间,方便以后调整空间分配,而在macOS下又不容易误操作损坏保存有重要资料的分区。
2、Android-x86系统
我接触过的主要是下面四个版本,可根据机器和个人喜欢选择下载,一般老机器不支持64bit系统运行的机型、或者内存小于2G的机型选择32bit版本。
因为我的安装方法不使用官方自带安装程序,所以只需要下载ISO文件:
Android-x86官方原版:http://www.android-x86.org/,这个不用多说,其它版本应该都是基于这个深度定制来的。
cm-x86(LineageOS):http://www.android-x86.org/,最新版本能分屏,窗口控制功能简单。
RemixOS: http://cn.jide.com 官方网站提供的版本是v2.0.513-Android5.1,http://www.android-x86.org/ 这里提供的是版本v3.0.207-Android6.0
PhoenixOS:http://www.phoenixos.com/phoenixos官方一直在维护更新,有完善的窗口控制功能,个人感觉凤凰OS整体界面风格是最好的。

二、安装和启动配置
1、将下载来的ISO文件打开(Windows8以后的可以直接双击加载ISO文件,也可以用WinRAR或UltraISO等工具打开)提取里的4个文件:initrd.img、kernel、ramdisk.img、system.sfs,其中system.sfs再用7z打开提取出system.img
到这里还差一个文件data.img需要我们自己准备,如果你已经有一台能运行Android-x86的电脑那就简单了,不管运行的是RemixOS还是PhoenixOS都可以,打开终端模拟器,没有终端模拟器就按Alt-F1吧,然后用下面的命令来创建:
make_ext4fs -l 8192M -a data /xxx/xxx/data.img
   -l 8192M 表示创建一个8G的映象文件
   -a data 表示映象的Android挂载点是data
   /xxx/xxx/data.img 表示映象文件路径和名称
如果你有运行Ubuntu,打开终端,也可以用使用上面的命令来创建,命令参数都不变,首次使用该命令会提示命令不存在并提示如何安装,按照提示安装一下就是了。
甚至如果你有一台Android5.0以上的手机或平板,只要安装有终端模拟器,都可以用上面的命令来创建。
如果什么都没有,我预制了 8G、16G、32G的空白data.img文件供下载使用,空白映象压缩后很小的,只有几M大小,下载很快。
现在有了这5个文件:initrd.img、kernel、ramdisk.img、system.img、data.img,一个完整的Android系统就有了,把它们放到一个文件夹里,文件夹取个好听的名字比如:LineageOS或者PhoenixOS都可以,也可以放到某个文件夹的子文件夹下面。如果是要安装在Ext4分区,打开DiskGenius将文件夹整体拖到Ext4分区即可,我以前用的DiskGenius可能版本太低了,向Ext4分区拷贝文件总是不成功,现在可以了。

2、启动定制
UEFI启动方式定制:
从我的网盘下载 “SurfacePro3-GRUB2启动文件”或者“MacBook-GRUB2启动文件”(其实两个文件除了GRUB启动菜单配置有区别,其它都是一样的),解压得到Boot文件夹,然后根据各自的具体情况用记事本修改配置文件/Boot/grub/grub.cfg。
特别说明一下:我在定制GRUB2时使用了Ubuntu的启动文件,因为这个启动文件是签名的,它可以通过UEFI的安全引导(Secure Boot),这意味着电脑在开启安全引导时可以启动到GRUB2菜单界面,但这仍然有局限,很多指令和insmod仍然是被禁止的,因此,我们的Android-x86如果放在NTFS分区,那么 insmod ntfs 是必须的,这种情况就必须禁用安全引导,如果是放在Ext4分区,那么所有的 insmod 都可以不要,这样就可以开启安全引导,象我的SurfacePro3如果禁止安全引导,开机时整个屏幕都是鲜亮红色背景,很刺眼很不舒服,所以必须放Ext4。
现就我的具体配置为例进行注释,方便大家对照修改。
SurfacePro3启动配置:
Android系统文件路径:
Android-x86官方版:/Android-x86
LineageOS:/LineageOS
RemixOS:/RemixOS
PhoenixOS:/PhoenixOS
grub.cfg文件:

                                 
                           
## GRUB2 for Surface Pro3 Boot Manager
set timeout=60
set pager=1

## 下面的insmod,Android如果在NTFS分区只需要保留insmod ntfs,如果在Ext4分区,所有的insmod都可以删除
insmod all_video
insmod exfat
insmod ext2
insmod fat
insmod gfxmenu
insmod gfxterm
insmod iso9660
insmod jpeg
insmod ntfs
insmod part_acorn
insmod part_amiga
insmod part_apple
insmod part_bsd
insmod part_dfly
insmod part_dvh
insmod part_gpt
insmod part_msdos
insmod part_plan
insmod part_sun
insmod part_sunpc
insmod png
insmod xfs

## 加载字体和主题,设置图形模式
loadfont ${prefix}/theme/unicode.pf2
loadfont ${prefix}/theme/DejaVuSansMono-18.pf2
set gfxmode=1280x1024
terminal_output gfxterm

## 加载主题样式
set theme=${prefix}/theme/oxygen/theme.txt
export theme

#### MENU BEGIN ####
## 启动Windows菜单(Win8、Win10都一样)
if search -f -n -s r /EFI/Microsoft/Boot/Bootmgfw.efi; then
    menuentry "Windows 8.1 Ent" "$r" --class windows {
    set root=$2
    chainloader /EFI/Microsoft/Boot/Bootmgfw.efi
    }
fi
## 启动Ubuntu菜单
## 注意 linux /vmlinuz root=/dev/sda5 ro quiet splash 中的 /dev/sda5 表示Ubuntu安装在第5分区,修改成你具体的
if search -f -n -s r /vmlinuz; then
    menuentry "Ubuntu 18.04LTS" "$r" --class ubuntu {
    set root=$2
    linux /vmlinuz root=/dev/sda5 ro quiet splash
    initrd /initrd.img
    }
fi
## 启动Android-x86官方版菜单
if search -f -n -s r /Android-x86/kernel; then
    menuentry "Android-x86 64bit" "$r" --class android-x86 {
    set root=$2
    linux /Android-x86/kernel root=/dev/ram0 androidboot.selinux=permissive quiet SRC= DATA=
    initrd /Android-x86/initrd.img
    }
fi
## 启动cm-x86(LineageOS)菜单
if search -f -n -s r /LineageOS/initrd.img; then
    menuentry "LineageOS 64bit" "$r" --class android-x86 {
    set root=$2
    linux /LineageOS/kernel root=/dev/ram0 androidboot.selinux=permissive quiet SRC= DATA=
    initrd /LineageOS/initrd.img
    }
fi
## 启动RemixOS菜单
if search -f -n -s r /RemixOS/initrd.img; then
    menuentry "RemixOS 64bit" "$r" --class android-x86 {
    set root=$2
    linux /RemixOS/kernel root=/dev/ram0 androidboot.selinux=permissive quiet SRC= DATA= logo.showlogo=1
    initrd /RemixOS/initrd.img
    }
fi
## 启动PhoenixOS菜单
if search -f -n -s r /PhoenixOS/initrd.img; then
    menuentry "PhoenixOS 64bit" "$r" --class android-x86 {
    set root=$2
    linux /PhoenixOS/kernel root=/dev/ram0 androidboot.selinux=permissive quiet SRC= DATA= androidboot.hardware=android_x86
    initrd /PhoenixOS/initrd.img
    }
fi

## 下面是高级选项子菜单
submenu "Advanced Option >" --class forward {
## 启动Win8PE菜单(如果需要可在我网盘下载)
    if search -f -n -s r /Boot/sources/Bootx64.efi; then
        menuentry "Windows 8 PE" "$r" --class windows {
        set root=$2
        chainloader /Boot/sources/Bootx64.efi
        }
    fi
## 启动Parted Magic菜单(如果需要可在我网盘下载

    if search -f -n -s r /Pmagic/pmagic.cfg; then
        submenu "Parted Magic 2016 >" "$r" --class gnu-linux {
        menuentry "Parted Magic (RAM and Vendor)" "$2" --class gnu-linux {
        set root=$2
        linux /Pmagic/bzImage64 edd=on vga=normal quiet acpi_backlight=vendor
        initrd /Pmagic/initrd.img /Pmagic/fu.img /Pmagic/m64.img
        }
        menuentry "Parted Magic Official config >" "$2" --class forward {
        set root=$2
        configfile /Pmagic/pmagic.cfg
        }
    }
    fi
## 下面为搜索本地其它可引导文件,不需要的可删除至下一条注释之间的内容
    if [ "${grub_cpu}" == "i386" ]; then
        set uefi=bootia32.efi
        set fbk=fallback.efi
        set grub=grubia32.efi
    else
        set uefi=bootx64.efi
        set fbk=fallback_x64.efi
        set grub=grubx64.efi
    fi
    echo Searching for local OS...
    set add_os=0
    add_os_if_exist /efi/boot/${uefi} "UEFI OS" os
    add_os_if_exist /efi/microsoft/boot/bootmgfw.efi "Windows (7/8/10/2008 etc.)" windows
    add_os_if_exist /efi/ubuntu/${grub} "Ubuntu" ubuntu
    add_os_if_exist /efi/boot/${fbk} "Fallback" os
    add_os_if_exist /efi/centos/${grub} "CentOS" centos
    add_os_if_exist /efi/debian/${grub} "Debian" debian
    add_os_if_exist /efi/fedora/${grub} "Fedora" fedora
    add_os_if_exist /efi/gentoo/${grub} "Gentoo" gentoo
    add_os_if_exist /efi/linuxmint/${grub} "Linux Mint" linuxmint
    add_os_if_exist /efi/opensuse/${grub} "openSUSE" opensuse
    add_os_if_exist /efi/boto/bootx64.efi "OPENTHOS" openthos
    add_os_if_exist /boot/grub/grub.cfg "GRUB2 config" grub cfg
    add_os_if_exist /boot.cfg "Custom GRUB2 boot" custom cfg
    if [ ${add_os} == 0 ]; then
        echo
        echo No local OS is found
    fi
    sleep 3

## 固件设置
    menuentry "Firmware Settings" --class setup { fwsetup }
}

## 重启电脑
menuentry "Reboot" --class reboot { reboot }

## 关闭电源
menuentry "Power Off" --class shutdown { halt }

#### MENU END ####

## 下面为搜索本地包括USB设备中其它可引导文件相关函数,不需要的可全部删除以下内容
## $1=boot file $2=title $3=--class $4=type
function add_os_if_exist {
 for n in 0 1 2 3 4 5 6 7 8 9; do
 for p in 1 2 3 4 5 6 7 8 9 cd; do
  if [ "$p" == "cd" ]; then
   set d=cd$n
  elif [ -f (hd$n,gpt$p)$1 ]; then
   set d=hd$n,gpt$p
  elif [ -f (hd$n,msdos$p)$1 ]; then
   set d=hd$n,msdos$p
  else
   set d=hd$n,$p
  fi
  if [ "$d" != "$root" -a -s ($d)$1 ]; then
  if [ "$4" == "cfg" ]; then
   menuentry "$2 at $d >" "$d" "$1" --class "$3" {
   set root=$2
   configfile $3
   }
  elif [ "${grub_platform}" == "efi" ]; then
   menuentry "$2 at $d" "$d" "$1" --class "$3" {
   set root=$2
   chainloader $3
   }
  else
   menuentry "$2 at $d" "$d" "$1" --class "$3" {
   set root=$2
   ntldr $3
   }
  fi
  set add_os=1
  echo Found ($d)$1
  fi
 done
 done
}

                                 
grub.cfg修改完毕检查无误,用DiskGenius工具将Boot文件夹整体复制到ESP分区根目录下,然后打开bootice工具,在 UEFI-->修改启动系列-->添加一个象下图中的启动项:

图片:01.jpg

在添加启动项时要求你选择一个启动文件,但我们无法定位到ESP分区,这时随便选一个文件,然后按图中的样子编辑修改保存,将该启动项上移到最顶端并保持选中,然后保存、关闭、退出,注意启动分区和启动文件一定要正确,重启电脑,出现启动菜单:

图片:2.jpg

MacBookPro启动配置:

Android系统文件路径:

Android-x86官方版:/AndroidOS/Android-x86

LineageOS:/AndroidOS/LineageOS

RemixOS:/AndroidOS/RemixOS

PhoenixOS:/AndroidOS/PhoenixOS

因为MacBook不存在“安全引导”的问题,所以我就都放在NTFS分区里,关于GRUB2启动配置与上面大同小异,此处不再赘述,仅就遇到的问题说说处理方法:

macOS系统无法通过GRUB2直接引导,如何处理,总不能老是按Alt键开机吧:

在GRUB里仍然写一个启动macOS的菜单项,只要一个exit命令,然后关机状态下按住Alt开机,选择进到macOS,在“偏好设置-->启动磁盘”里选择macOS,然后关机,再按住Alt开机,选择进入Windows(如果你没有安装Windows,用WinPE也可以),然后用bootice将GRUB2启动项设为优先(默认)启动项即可。

另外在MacBook上运行Android-x86,一开机亮度就是最大且不能控制,亮度调节划块会显示:

起初我找了个控制亮度的APP,并在系统脚本里添加了启动APP和模拟控制脚本,让系统开机亮度就在正常范围,但效果并不令人满意,严格来说这个APP不是真正控制亮度,而是象给你的屏幕上了层遮光板,但象任务栏和某些部件它又没有遮住,仍然亮得刺眼,试了多个亮度控制APP都是如此。后来通过查阅资料、学习研究找到了一个方法就是在启动菜单里Linux那一行增加一个参数acpi_backlight=vendor 如:

   linux /xxxxx/xxxx xxxxxxxx acpi_backlight=vendor

从此亮度正常了,虽然亮度仍然不能调节,但当你在macOS里亮度是多大,在Android里就是多大,完全满足使用。(Ubuntu也存在开机亮度最大,但可调节,启动配置加上这个参数解决问题,仍然可调节)。

关于UEFI启动还有一点要知道的:当macOS、Windows或Ubuntu在进行大的更新后,可能会重写引导导致我们的GRUB2没有启动,这时只需要用bootice重新设置一下默认启动项,如果启动项不在了,添加一个即可。

MBR启动方式定制:
以ThinkPad_x61为例,Android-x86文件放在Ext4区(经测试放在NTFS分区,RemixOS和PhoenixOS都不能正常启动)

去这里下载最新版本GRUB2:ftp://ftp.gnu.org/gnu/grub/,目前的版本应该是 grub-2.02-for-windows,解压缩到C盘根目录下,得到grub-2.02-for-windows文件夹,再在我的网盘下载“TPX61-GRUB2引导文件”备用,然后管理员方式打开一个命令提示窗口,按下面的步骤进行:

执行下面的命令进到GRUB2软件目录

c:

cd \grub-2.02-for-windows

执行下面的命令获取要安装GRUB2目标盘ID

wmic diskdrive list brief

根据屏幕显示获取一个象这样的字符串:\\.\PHYSICALDRIVE0,这里假设就是我们要安装的盘,如果有多个请确认要安装到哪一个盘

执行下面的命令安装GRUB2

grub-install --boot-directory=c:\.boot \\.\PHYSICALDRIVE0

当显示 Installation finished. No error reported. 表示安装成功

关闭命令窗口

解压“TPX61-GRUB2引导文件”将里面的.boot文件夹复制到C盘根目录与c:\.boot合并

记事本打开 c:\.boot\grub\grub.cfg 文件,修改里面的内容符合你自己的配置

重启电脑应该就可以可看到启动菜单了

注意:Windows下的GRUB2安装完并不会生成启动配置文件grub.cfg,所以执行完 grub-install 就重启电脑的话,只会进到GRUB2命令状态,不会启动任何操作系统,如果你不小心到了这个状态,执行下面的命令:

如果安装的是WindowsXP,执行:

search -f -n -s /ntldr

ntldr /ntldr

boot

如果安装的是Windows7、8、10,执行:

search -f -n -s /bootmgr

ntldr /bootmgr

boot


本文资源下载:https://pan.baidu.com/s/1vtbgl6fnauRdq2hinE-ZwA  提取码 2o9a

[dlz于2019-08-05 17:08编辑了帖子]
dlz
dlz
元婴期 · 高手
元婴期 · 高手
  • UID26735
  • 注册日期2017-06-04
  • 粉丝11
  • 发帖数21
  • 威望924
  • 被喜欢75
  • 有效bug0
沙发#
发布于:2018-12-28 01:10
玩转Android-x86(安装启动、个性定制、高级运用)
应用篇

没多少人回复、支持,都没什么兴趣写下去了,不过帖子还是要完成的,下面就写得简短些,尽快结束,打那么多字还累。

1、必备软件
     幸运破解器:功能强大,最看重的是它的模拟内购,在GooglePlay下载的很多APP包含广告内购,就用它来处理吧,建议安装。
     RE管理器:替代系统文件管理器,功能强大不必多说,相信绝大多数人都在用它。
     SQLiteEdit:数据库编辑修改工具,试了很多同类产品,我网盘共享的是最好的。
     终端模拟器:尽管系统可按Alt-F1到命令状态,但对于高分辨率屏幕来说显示的文字太小太小了。

2、RemixOS的initrd.img文件,用网盘共享里的替换掉,否则ROOT和Xposeds可能不正常(32位64位都是用它)。

3、RemixOS的应用抽屉:原版的有应用推荐,不喜欢的可用网盘共享里我修改过的AppDrawer.apk替换/system/priv-app/AppDrawer里的文件(32位64位都用它),修改内容:去掉推荐,微调布局。

4、RemixOS桌面Bug:RemixOS有两种桌面,但切换有Bug,Bug出现可能会导致不能正常启动,一直停在Logo界面,因此干脆改用其它桌面:
      安装NovaLauncher(最好用RE管理器放到/system/priv-app/NovaLauncher)
      删除/system/priv-app/FileLauncher和/system/priv-app/Launcher3两个文件夹重启即可。

5、安装Xposed:32位的用RE管理器直接在/system/priv-app里创建文件夹XposedInstall,将下载的APK文件改名为XposedInstall.apk放到文件夹里并设置好权限,重启。64位按版本对应下载文件包,按里面说明安装。

6、分辨率设置:非必要建议不要改变分辨率,用命令 wm density xxx 将显示调整到自己满意,然后修改/system/build.prop:
      对于RemixOS,将下面两处的160改成调整好的数字:
          persist.sys.disp_density=160
          ro.sf.lcd_density=160
      对于PhoenixOS,增加一行内容:ro.sf.lcd_density=xxx(xxx是调整好的数字)
      通过我自己实践,仅命令调整显示后,如果不修改build.prop,某些全屏运行程序界面布局会不正常。

7、分区挂载修改:对于原版的分区挂载不是很满意,主要原因是:a)仅挂载NTFS分区没有挂载其它分区(如ESP、Ext4)。b)挂载的分区都是读写模式,这对于Windows系统分区很不利,不小心可能损坏里面的文件。c)挂载的分区并不能被其它APP检索,达不到资源共享。为此改写了分区挂载方式如下:
      为了方便不同机型使用,特地又再重写脚本,一般只需要修改下面这三行:
      dev="nvme0n1p1 nvme0n1p2 nvme0n1p3 sda1 sda2" 表示分区设备名称,示例里有两个硬盘,nvme0n1p是SSD硬盘,sda是一个机械硬盘,根据自己的机型在 /dev/block 目录里查看,改成自己机型的,把想挂载的分区都放在dev参数里,中间用空格分隔。
     pns=pns="ESP Windows Android WinData Backup" 表示对应上面dev参数里的硬盘分区想挂载的名称,名称自己随便取,只要不重复,之间用空格分隔,如果名称为 “-” 号表示该分区不挂载。
     per="ro ro rw rw ro" 表示各分区挂载方式,ro 表示挂载为只读,rw 表示挂载为读写。
     
      针对RemixOS,修改/etc/init.sh,在文件末尾紧随 return 0 的前面增加下面的代码
## Custom Partition mount ##
   dev="nvme0n1p1 nvme0n1p2 nvme0n1p3 sda1 sda2"
   pns="ESP Windows Android WinData Backup"
   per="ro ro rw rw ro"
   path="/mnt/hdd"
   d="/dev/block/"
   echo -n false > /data/property/persist.remixos.auto_mount_hdd
   busybox mount -o remount rw /
   k=1
   for n in $pns; do
       p[k]=$path/$n
       if [ "$n" != "-" ]; then
           mkdir -p ${p[k]}
       fi
       ((k++))
   done
   chmod -R 0755 $path
   k=1
   for n in $dev; do
       d[k]=$d$n
       ((k++))
   done
   k=1
   for n in $per; do
       if [ -d ${p[k]} ]; then
           ntfs-3g -o $n ${d[k]} ${p[k]}
           if [ $? != 0 ]; then
               mount -o $n ${d[k]} ${p[k]}
           fi
       fi
       ((k++))
   done
   # 下面这两行不是必须的,可以不要
   busybox ln -sn ${p[3]} /_root
   busybox ln -sn /_root/sdcard /sdcard2


      针对PhoenixOS,修改/etc/init.custom.sh,原来的所有内容用下面的替换(支持自带文件管理器访问各分区)

#! /system/bin/sh
## Custom Partition mount ##
   dev="nvme0n1p1 nvme0n1p2 nvme0n1p3 sda1 sda2"
   pns="ESP Windows Android WinData Backup"
   per="ro ro rw rw ro"
   path="/mnt/hdd"
   d="/dev/block/"
   s="/storage/disk"
   blk="/data/system/blkid.cache"
   busybox mount -o remount rw /
   k=1
   for n in $pns; do
       p[k]=$path/$n
       if [ "$n" != "-" ]; then
           mkdir -p ${p[k]}
       fi
       ((k++))
   done
   chmod -R 0755 $path
   k=1
   for n in $dev; do
       d[k]=$d$n
       ((k++))
   done
   echo -n "" > $blk
   chmod 666 $blk
   k=1
   j=0
   for n in $per; do
       if [ -d ${p[k]} ]; then
           ntfs-3g -o $n ${d[k]} ${p[k]}
           if [ $? != 0 ]; then
               mount -o $n ${d[k]} ${p[k]}
           fi
           busybox ln -sn ${p[k]} $s$j
           echo `blkid -c /dev/null ${d[k]}`" MOUNT=\"$s$j\"" >> $blk
           ((j++))
       fi
       ((k++))
   done
   # 下面这两行不是必须的,可以不要
   busybox ln -sn ${p[3]} /_root
   busybox ln -sn /_root/sdcard /sdcard2
return 0

      保存、退出、重启,现在APP就可以检索到其它分区的内容如:MXPlayer、PowerAMP都可以在设置里增加其它分区的文件夹作为媒体文件夹,从而达到共享在Windows里下载的视频、音乐文件。
      在我的AndroidOS下建有sdcard文件夹,通过上面代码,在RE管理器里设置扩展存储标签为/mnt/sdcard2,使用非常方便,在Windows环境为Android准备的文件也很方便就传递给Android系统。
      上面ESP、Windows、Ubuntu分区挂载为只读,在必要的情况下也可以卸载,重新挂载为读写模式,这样就可以对这些分区里的文件进行各种操作。

8、关于APP窗口状态,有的APP应用只能全屏不能切换窗口模式,有的又只能窗口模式不能切换为全屏,可以修改为我们需要的:
      针对PhoenixOS:文本编辑方式打开/data/system/app_window_settings.xml,找到对应APP的pkg name,修改相应的windowState值:windowState="0"表示窗口模式,windowState="5"表示全屏模式。
      针对RemixOS:SQLiteEdit打开/data/data/com.jide.multiwindow/databases/multiwindow.db,打开config表,找到对应APP的package_name,修改 mode,screen_mode,support_mode三个字段,例如三个字段值分别为:0   0   2 时可切换全屏或窗口,为 0   0   1 时窗口模式(不可切换到全屏),为 1   0   1 时全屏模式(不可切换到窗口)。

9、如何无损调整system.img的大小:
      例如将system.img调整为4G(具体尺寸不能小于已使用的空间大小,可在RE管理器中/system下看到已使用的空间)
      打开终端执行下面的命令:
        su
        make_ext4fs -l 4096M -a system /mnt/sdcard2/system.img /system
      稍候片刻完成后就会在 /mnt/sdcard2 文件夹生成 system.img ,将这个文件替换原来的即可(不放心的话可以将原来的暂时备份一下)。

10、如何无损调整data.img大小:
      因为在Android运行时data.img中的内容处于动态变化中,因此需要先将data.img复制一个副本,这里举例复制到 /mnt/sdcard2/d.img,data.img调整为16G(具体尺寸不能小于已使用的空间大小,可在RE管理器中/data下看到已使用的空间)
      打开终端执行下面的命令:
       su
       mkdir /mnt/d1
       mkdir /mnt/d1/data
       mkdir /mnt/d2
       mkdir /mnt/d2/data
       busybox mount /mnt/sdcard2/d.img /mnt/d1/data
       make_ext4fs -l 16384M -a data /mnt/sdcard2/data.img
       busybox mount /mnt/sdcard2/data.img /mnt/d2/data
       busybox cp -a /mnt/d1/data /mnt/d2
       umount /mnt/d2/data
       umount /mnt/d1/data
      上面每条命令都待执行完出现命令提示符后再执行下一条命令,如果中途有提示错误请自行查错,正常情况下上面命令完成后就会在 /mnt/sdcard2 文件夹生成 data.img ,将这个文件替换原来的即可。
      关于上面第 9、10无损调整img大小,有人说了用 e2fsck 和 resize2fs 命令,试了,的确,在此感谢那位网友!!!不过说“不知道就丢人“那样的话,本人不敢苟同,照这样说那丢人就太多了太多了,谁都不是圣贤,都有不知道的,本人也不是学这个专业的,只是感兴趣、分享经验而已......口水话就不多说了。

11、如何在Android-x86中整体备份Ext4分区,就象用Ghost备份NTFS分区那样:
      因为Android的img映象保存了Ext4的所有文件结构(如每个文件的权限设置、链接等等),可以利用这个特点对Ext4分区进行备份,下面以我电脑上安装的Ubuntu为例以及上面第7条的基础来说明如何备份和恢复:
      备份:
     下面命令创建的20G的img文件(在/mnt/sdcard2/ubk.img),具体尺寸不能小于Ubuntu已使用的空间大小,可在RE管理器中/mnt/hdd/Ubuntu下看到已使用的空间大小。
     打开终端执行下面的命令:
        su
        make_ext4fs -l 20480M /mnt/sdcard2/ubk.img
        mkdir /mnt/Ubuntu
        busybox mount /mnt/sdcard2/ubk.img /mnt/Ubuntu
        busybox cp -a /mnt/hdd/Ubuntu /mnt
        umount /mnt/Ubuntu
      完成后得到 ubk.img 就是Ubuntu的备份,可以用WinRAR再压缩保存。
      恢复:
      先用DiskGenius准备分区并格式化为Ext4类型
     打开终端执行下面的命令:
        su
        mkdir /mnt/Ubuntu
        busybox mount /mnt/sdcard2/ubk.img /mnt/Ubuntu
        umount /mnt/hdd/Ubuntu      (这里是因为我上面已经挂载Ubuntu分区为只读,所以要重新挂载为读写)
        mount /dev/block/sda4 /mnt/hdd/Ubuntu
        busybox cp -a /mnt/Ubuntu /mnt/hdd
        umount /mnt/hdd/Ubuntu
        umount /mnt/Ubuntu
      用上面的方法可以完成对Ubuntu进行备份,恢复,甚至可以恢复到其它硬盘实现整体迁移,只是要注意,恢复后可能需要修改一下Ubuntu中/etc/fstab的分区挂载参数和/boot/grub/grub.cfg中有关硬盘UUID参数的地方,是否需要修改要看你备份时的硬盘分区编号、UUID等在恢复后是否一致。


(内容会不定期添加)
[dlz于2019-08-05 19:26编辑了帖子]
dlz
dlz
元婴期 · 高手
元婴期 · 高手
  • UID26735
  • 注册日期2017-06-04
  • 粉丝11
  • 发帖数21
  • 威望924
  • 被喜欢75
  • 有效bug0
板凳#
发布于:2018-12-28 01:12
占楼备用...
jlabcjqf
化神期 · 元老
化神期 · 元老
  • UID4670
  • 注册日期2016-01-20
  • 粉丝1
  • 发帖数19
  • 威望2035
  • 被喜欢7
  • 有效bug0
地板#
发布于:2018-12-28 09:49
支持一下
acusca
元婴期 · 高手
元婴期 · 高手
  • UID42229
  • 注册日期2018-01-28
  • 粉丝2
  • 发帖数10
  • 威望595
  • 被喜欢2
  • 有效bug0
  • 忠实会员
4楼#
发布于:2018-12-28 12:01
期待中..............
我在大学当保安
化神期 · 元老
化神期 · 元老
  • UID74864
  • 注册日期2018-11-27
  • 粉丝0
  • 发帖数87
  • 威望2356
  • 被喜欢22
  • 有效bug0
  • 忠实会员
5楼#
发布于:2018-12-28 12:26
坐等更新
好兄弟”苦口毒药“和“decade2016”的家人去世了,望他俩节哀顺变,有时间多多陪伴家人,不要总上网看XX,积极配合医生的治疗
寥落星河
元婴期 · 高手
元婴期 · 高手
  • UID44223
  • 注册日期2018-02-21
  • 粉丝3
  • 发帖数62
  • 威望811
  • 被喜欢31
  • 有效bug0
  • 忠实会员
6楼#
发布于:2018-12-28 13:09
mark
1072286251
筑基期 · 主力
筑基期 · 主力
  • UID43340
  • 注册日期2018-02-12
  • 粉丝1
  • 发帖数21
  • 威望204
  • 被喜欢11
  • 有效bug0
7楼#
发布于:2018-12-29 22:25
gun grub 2.02怎么办
DUYUAN
化神期 · 元老
化神期 · 元老
  • UID41650
  • 注册日期2018-01-20
  • 粉丝4
  • 发帖数176
  • 威望2121
  • 被喜欢96
  • 有效bug0
  • 忠实会员
8楼#
发布于:2018-12-29 22:36
请问安卓5.1怎么安装XP或者magisk
zswh
筑基期 · 主力
筑基期 · 主力
  • UID35889
  • 注册日期2017-11-04
  • 粉丝1
  • 发帖数2
  • 威望79
  • 被喜欢3
  • 有效bug0
9楼#
发布于:2018-12-31 09:35
坐等更新
lichao4444
元婴期 · 高手
元婴期 · 高手
  • UID69000
  • 注册日期2018-08-23
  • 粉丝2
  • 发帖数91
  • 威望591
  • 被喜欢33
  • 有效bug0
10楼#
发布于:2018-12-31 18:25
支持啊!!!
lichao4444
元婴期 · 高手
元婴期 · 高手
  • UID69000
  • 注册日期2018-08-23
  • 粉丝2
  • 发帖数91
  • 威望591
  • 被喜欢33
  • 有效bug0
11楼#
发布于:2019-01-01 19:19
恩啊!顶!
totoom
筑基期 · 主力
筑基期 · 主力
  • UID5088
  • 注册日期2016-01-27
  • 粉丝3
  • 发帖数21
  • 威望113
  • 被喜欢5
  • 有效bug0
12楼#
发布于:2019-01-02 10:08
支持详细教学文,!
simonlin
元婴期 · 高手
元婴期 · 高手
  • UID61482
  • 注册日期2018-06-06
  • 粉丝5
  • 发帖数49
  • 威望683
  • 被喜欢44
  • 有效bug0
13楼#
发布于:2019-01-02 11:37
这才是公认的高手!
dlz
dlz
元婴期 · 高手
元婴期 · 高手
  • UID26735
  • 注册日期2017-06-04
  • 粉丝11
  • 发帖数21
  • 威望924
  • 被喜欢75
  • 有效bug0
14楼#
发布于:2019-01-04 15:52
暂告段落,没人看,自顶一下。
上一页
游客

返回顶部