mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-15 13:18:56 +10:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92d7349ec0 | ||
|
|
1e8c00071d | ||
|
|
1bf4cf7dce | ||
|
|
79559943ad | ||
|
|
f5dc3d7939 | ||
|
|
4ed36074e6 | ||
|
|
608053b8e1 | ||
|
|
928d7ed759 | ||
|
|
f68cfbcb69 | ||
|
|
0ad2fb53d2 | ||
|
|
13d1110b7a |
35
.github/workflows/build_test_deploy.yml
vendored
Normal file
35
.github/workflows/build_test_deploy.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: Build/Test/Deploy
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- gh-pages
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
jobs:
|
||||
build:
|
||||
name: Build Site and Deploy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: '12'
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
- name: Install
|
||||
run: npm install
|
||||
working-directory: 'docs'
|
||||
- name: Build
|
||||
run: npm run build
|
||||
working-directory: 'docs'
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@3.7.1
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main'}}
|
||||
with:
|
||||
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
BRANCH: gh-pages
|
||||
FOLDER: docs/.vuepress/dist/
|
||||
CLEAN: true
|
||||
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
name: Build App
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -7,3 +7,8 @@
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
/docs/.vuepress/dist
|
||||
/docs/.vuepress/.config.js.swp
|
||||
/docs/yarn.lock
|
||||
/docs/yarn-error.log
|
||||
/docs/node_modules/
|
||||
@@ -1,5 +1,8 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 0.0.17
|
||||
- Fix build detection breaking on older OS
|
||||
|
||||
## 0.0.16
|
||||
- Move Serial selection to Patcher Settings
|
||||
- Add new SMBIOS patching options:
|
||||
|
||||
59
README.md
59
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
<img src="images/OC-Patcher.png" width="256">
|
||||
|
||||
A python program for building and booting OpenCore on legacy Macs, see [Supported SMBIOS](/docs/MODELS.md) on whether your model is supported.
|
||||
A python program for building and booting OpenCore on legacy Macs, see [Supported SMBIOS](https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html) on whether your model is supported.
|
||||
|
||||
Supported features:
|
||||
|
||||
@@ -19,64 +19,17 @@ Note: Only clean-installs and upgrades are supported, installs already patched w
|
||||
Note 2: Currently OpenCore Legacy Patcher only supports macOS 11, Big Sur installs. For older OSes, please use [Dosdude1's patchers](http://dosdude1.com)
|
||||
|
||||
## How to use
|
||||
See the online guide on how:
|
||||
|
||||
To use, simply:
|
||||
|
||||
1. Ensure your hardware is compatible(See [Supported SMBIOS](/docs/MODELS.md))
|
||||
2. [Download and build macOS Installer](./docs/INSTALLER.md)
|
||||
3. Download the latest release: [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
||||
4. Run the `OpenCore-Patcher.app`
|
||||
5. Run `Build OpenCore`(if building for another machine, please select `Change Model`)
|
||||
|
||||
| First Run | Build EFI |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* Note: When the patcher ask you to if you want to use original serials, we recommend doing so. To determine yourself if you want:
|
||||
* Original: Mac is nearly identical to pre-patcher, with only minor changes in SMBIOS. Ideal configuration for iServices to work correctly
|
||||
* Custom: Rebuilds SMBIOS table to Mac you're spoofing, generally recommended when troubleshooting such as APFS support missing in the installer
|
||||
|
||||
6. Run `Install OpenCore to USB/internal drive`
|
||||
|
||||
| Select Drive | Select EFI/FAT32 Partition |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* Ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it, you may need to format your drive as GUID/GPT in Disk Utility
|
||||
|
||||
7. Reboot machine while holding `Option` to select OpenCore, then boot the macOS Installer
|
||||
|
||||
| Mac Boot Picker | OpenCore Picker |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
For nightly builds, you can either run `OpenCore-Patcher.command` from [main](https://github.com/dortania/Opencore-Legacy-Patcher/archive/main.zip) or grab the binary from [Github Actions](https://github.com/dortania/Opencore-Legacy-Patcher/actions). Note the latter does not require a py3 install.
|
||||
|
||||
## Post-Installation
|
||||
|
||||
Once finished, see below for common post-installation steps:
|
||||
|
||||
* [Post-Installation](./docs/POST-INSTALL.md)
|
||||
|
||||
## How to uninstall OpenCore?
|
||||
|
||||
To remove OpenCore is actually quite simply:
|
||||
|
||||
1. Remove OpenCore either from the USB or internal drive
|
||||
* You'll need to mount the drive's EFI partition, and delete the EFI folder
|
||||
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
|
||||
2. Reset NVRAM
|
||||
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
|
||||
|
||||
Know that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the prohibited symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
|
||||
* [OpenCore Legacy Patcher Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/)
|
||||
|
||||
## Patcher Warnings
|
||||
|
||||
Since this patcher tricks macOS into thinking you're running a newer Mac, certain functionality may be broken:
|
||||
|
||||
* Boot Camp Assistant.app
|
||||
* We recommend running the assistant on a natively supported OS
|
||||
* We recommend running the assistant on a natively supported OS, running via the patcher may result in unforeseen issues
|
||||
* Legacy Windows Booting
|
||||
* Currently OpenCore cannot boot MBR-based installs, so Ivy Bridge and older Machines may not be able to see Windows in OpenCore's Boot Picker
|
||||
|
||||
## [Troubleshooting](/docs/TROUBLESHOOTING.md)
|
||||
* Boot Buddy support
|
||||
* Due to how OpenCore overwrites NVRAM , the usage of Boot Buddy and such tools are **highly** in-advised
|
||||
|
||||
@@ -8,7 +8,7 @@ from pathlib import Path
|
||||
|
||||
class Constants:
|
||||
def __init__(self):
|
||||
self.patcher_version = "0.0.16"
|
||||
self.patcher_version = "0.0.17"
|
||||
self.opencore_commit = "7bb41aa - 2021-03-06"
|
||||
self.opencore_version = "0.6.8"
|
||||
self.lilu_version = "1.5.1"
|
||||
|
||||
@@ -95,12 +95,8 @@ class BuildOpenCore:
|
||||
|
||||
# WiFi patches
|
||||
# TODO: -a is not supported in Lion and older, need to add proper fix
|
||||
if self.constants.detected_os < 10.8:
|
||||
print(f"- Unable to run Wifi detection on {self.constants.detected_os}")
|
||||
wifi_devices = ["NULL", "NULL"]
|
||||
else:
|
||||
wifi_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
wifi_devices = [i for i in wifi_devices if i["vendor-id"] == binascii.unhexlify("E4140000") and i["class-code"] == binascii.unhexlify("00800200")]
|
||||
wifi_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
wifi_devices = [i for i in wifi_devices if i["vendor-id"] == binascii.unhexlify("E4140000") and i["class-code"] == binascii.unhexlify("00800200")]
|
||||
if self.constants.wifi_build is True:
|
||||
print("- Skipping Wifi patches on request")
|
||||
elif not self.constants.custom_model and wifi_devices and self.hexswap(binascii.hexlify(wifi_devices[0]["device-id"]).decode()[:4]) in ModelArray.nativeWifi:
|
||||
|
||||
14
docs/.markdownlint.json
Normal file
14
docs/.markdownlint.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"default": true,
|
||||
"line_length": false,
|
||||
"no-alt-text": false,
|
||||
"no-inline-html": false,
|
||||
"header-increment": false,
|
||||
"no-duplicate-header": false,
|
||||
"fenced-code-language": false,
|
||||
"no-emphasis-as-heading": false,
|
||||
"single-title": false,
|
||||
"ul-style": {
|
||||
"style": "asterisk"
|
||||
}
|
||||
}
|
||||
10
docs/.markdownlintignore
Normal file
10
docs/.markdownlintignore
Normal file
@@ -0,0 +1,10 @@
|
||||
/node_modules/
|
||||
/_book/
|
||||
*.json
|
||||
/extra-files/
|
||||
/.git/
|
||||
/icons/
|
||||
/images/
|
||||
/styles/
|
||||
/.github/
|
||||
/.vuepress/
|
||||
116
docs/.vuepress/config.js
Executable file
116
docs/.vuepress/config.js
Executable file
@@ -0,0 +1,116 @@
|
||||
const {
|
||||
description
|
||||
} = require('../package')
|
||||
|
||||
module.exports = {
|
||||
title: 'OpenCore Legacy Patcher',
|
||||
head: [
|
||||
['meta', {
|
||||
name: 'theme-color',
|
||||
content: '#3eaf7c'
|
||||
}],
|
||||
['meta', {
|
||||
name: 'apple-mobile-web-app-capable',
|
||||
content: 'yes'
|
||||
}],
|
||||
['meta', {
|
||||
name: 'apple-mobile-web-app-status-bar-style',
|
||||
content: 'black'
|
||||
}],
|
||||
["link", {
|
||||
rel: "'stylesheet",
|
||||
href: "/styles/website.css"
|
||||
},]
|
||||
],
|
||||
base: '/OpenCore-Legacy-Patcher/',
|
||||
|
||||
watch: {
|
||||
$page(newPage, oldPage) {
|
||||
if (newPage.key !== oldPage.key) {
|
||||
requestAnimationFrame(() => {
|
||||
if (this.$route.hash) {
|
||||
const element = document.getElementById(this.$route.hash.slice(1));
|
||||
|
||||
if (element && element.scrollIntoView) {
|
||||
element.scrollIntoView();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
markdown: {
|
||||
extendMarkdown: md => {
|
||||
md.use(require('markdown-it-multimd-table'), {
|
||||
rowspan: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
theme: 'vuepress-theme-succinct',
|
||||
globalUIComponents: [
|
||||
'ThemeManager'
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
lastUpdated: true,
|
||||
repo: 'https://github.com/dortania/OpenCore-Legacy-Patcher',
|
||||
editLinks: true,
|
||||
editLinkText: 'Help us improve this page!',
|
||||
logo: 'homepage.png',
|
||||
|
||||
sidebar: [{
|
||||
title: 'Introduction',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'START',
|
||||
'MODELS',
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
title: 'Setting up',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'INSTALLER',
|
||||
'BUILD',
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
title: 'Installation',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'BOOT',
|
||||
'POST-INSTALL',
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
title: 'Misc',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'TROUBLESHOOTING',
|
||||
'UNINSTALL',
|
||||
]
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
'@vuepress/plugin-back-to-top',
|
||||
'vuepress-plugin-smooth-scroll',
|
||||
['vuepress-plugin-medium-zoom',
|
||||
{
|
||||
selector: "img",
|
||||
options: {
|
||||
background: 'var(--bodyBgColor)'
|
||||
}
|
||||
}],
|
||||
]
|
||||
}
|
||||
BIN
docs/.vuepress/public/favicon.ico
Normal file
BIN
docs/.vuepress/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/.vuepress/public/homepage.png
Normal file
BIN
docs/.vuepress/public/homepage.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 270 KiB |
49
docs/.vuepress/styles/index.styl
Executable file
49
docs/.vuepress/styles/index.styl
Executable file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Custom Styles here.
|
||||
*
|
||||
* ref:https://v1.vuepress.vuejs.org/config/#index-styl
|
||||
*/
|
||||
|
||||
[data-theme='light']
|
||||
--sideBgColor $sideBgColor
|
||||
|
||||
[data-theme='dark']
|
||||
--sideBgColor $sideBgColorDark
|
||||
--dropShadowColor $dropShadowColor
|
||||
|
||||
.home .hero img
|
||||
max-width 450px!important
|
||||
|
||||
.navbar
|
||||
filter drop-shadow(0px 1px 1px var(--dropShadowColor))
|
||||
|
||||
.sidebar
|
||||
background-color var(--sideBgColor)
|
||||
|
||||
div[class*="language-"]
|
||||
pre, pre[class*="language-"]
|
||||
margin-top 0
|
||||
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
background-color: unset;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width 0px
|
||||
background transparent /* make scrollbar transparent */
|
||||
}
|
||||
|
||||
tr
|
||||
&:nth-child(1n)
|
||||
background-color var(--bodyBgColor)
|
||||
&:nth-child(2n)
|
||||
background-color var(--sideBgColor)
|
||||
|
||||
|
||||
|
||||
.dropdown-wrapper .nav-dropdown
|
||||
border 1px solid var(--sideBgColor)!important
|
||||
background-color var(--sideBgColor)!important
|
||||
box-shadow 0px 0px 2px var(--bodyBgColor)
|
||||
right -12%!important
|
||||
23
docs/.vuepress/styles/palette.styl
Executable file
23
docs/.vuepress/styles/palette.styl
Executable file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Custom palette here.
|
||||
*
|
||||
* ref:https://v1.vuepress.vuejs.org/zh/config/#palette-styl
|
||||
*/
|
||||
|
||||
$bodyFontSize = 16px
|
||||
$fallbackTheme = 'dark'
|
||||
$dropShadowColor = #111112
|
||||
|
||||
// Light Theme
|
||||
$accentColor = #19b3e7
|
||||
$textColor = #2c3e50
|
||||
$bodyBgColor = #fff
|
||||
$sideBgColor = #fff
|
||||
$badgeTipColor = #caf2ff
|
||||
|
||||
// Dark Theme
|
||||
$accentColorDark = #30BCD5
|
||||
$textColorDark = #ccc
|
||||
$bodyBgColorDark = #2d3033
|
||||
$sideBgColorDark = #363b40
|
||||
$badgeTipColorDark = #023e52
|
||||
20
docs/BOOT.md
Normal file
20
docs/BOOT.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Booting OpenCore and macOS
|
||||
|
||||
Now we finally get to boot OpenCore!
|
||||
|
||||
Reboot machine while holding `Option` to select the EFI Boot entry with the OpenCore icon:
|
||||
|
||||
* This will be the Mac Boot Picker
|
||||
|
||||

|
||||
|
||||
Now that you've loaded OpenCore, now select Install macOS!:
|
||||
|
||||
* This will be the OpenCore Picker
|
||||
|
||||

|
||||
|
||||
|
||||
After plenty of verbose booting, you will reach the installer screen! From there it's just like any normal macOS install.
|
||||
|
||||
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)
|
||||
37
docs/BUILD.md
Normal file
37
docs/BUILD.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# Building and installing OpenCore
|
||||
|
||||
Now that we have a macOS installer, lets now build our OpenCore configuration!
|
||||
|
||||
First Download the latest release:
|
||||
|
||||
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
||||
|
||||
Next, run the `OpenCore-Patcher.app`:
|
||||
|
||||

|
||||
|
||||
From here you have a couple important options:
|
||||
|
||||
* Build OpenCore
|
||||
* Install OpenCore to USB/internal drive
|
||||
* Change Model
|
||||
* Patcher Settings
|
||||
|
||||
If you're patching for a different machine than you're running, please select "Change Model" and enter the updated SMBIOS. For more advanced users, you may also tweak the patcher's build settings via "Patcher Settings"
|
||||
|
||||
Now lets enter "Build OpenCore":
|
||||
|
||||

|
||||
|
||||
The process should be quite quick to build, once finished you'll be plopped back to the main menu.
|
||||
|
||||
Next lets run `Install OpenCore to USB/internal drive`:
|
||||
|
||||
| Select Drive | Select EFI/FAT32 Partition |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* If you have issues, please ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it. You will need to format your drive as GUID/GPT in Disk Utility
|
||||
|
||||
|
||||
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)
|
||||
@@ -1,9 +1,9 @@
|
||||
# How to download and build macOS Installers
|
||||
# Download and build macOS Installers
|
||||
|
||||
* [Downloading](#downloading)
|
||||
* [Building](#building)
|
||||
|
||||
This doc is centered around downloading and writting the macOS installer to a USB. If you're already familair with how to do this, you can skip.
|
||||
This doc is centered around downloading and writing the macOS installer to a USB. If you're already familiar with how to do this, you can skip.
|
||||
|
||||
* Note: 16GB+ USB will be required for the installer
|
||||
|
||||
@@ -28,7 +28,7 @@ Once finished, you'll find in your `~/macOS-Installer/` folder a DMG containing
|
||||
* Note: We recommend to move the Install macOS.app into the `/Applications` folder, as we'll be executing commands from there.
|
||||
* Note 2: Running Cmd+Shift+G in Finder will allow you to easily jump to `~/macOS-installer`
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
@@ -50,4 +50,4 @@ sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstall
|
||||
|
||||

|
||||
|
||||
# Once finished, [return to the README to finish up](../README.md)
|
||||
# Once finished, head to [Building and installing OpenCore](./BUILD.md)
|
||||
|
||||
@@ -122,4 +122,6 @@ The below table will list all supported and unsupported functions of the patcher
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Xserve1,1 | Mid-2006 | <span style="color:red"> NO </span> | 32-Bit Firmware limitation |
|
||||
| Xserve2,1 | Early 2008 | ^^ | ^^ |
|
||||
| Xserve3,1 | Early 2009 | <span style="color:#30BCD5"> YES </span> | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
|
||||
| Xserve3,1 | Early 2009 | <span style="color:#30BCD5"> YES </span> | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
|
||||
|
||||
# Once you've verified your hardware is supported, head to [Download and build macOS Installers](./INSTALLER.md)
|
||||
20
docs/README.md
Normal file
20
docs/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
home: true
|
||||
heroImage: /homepage.png
|
||||
heroText: OpenCore Legacy Patcher
|
||||
actionText: Getting Started→
|
||||
actionLink: START.md
|
||||
|
||||
meta:
|
||||
- name: description
|
||||
content: Experience macOS just like before
|
||||
|
||||
features:
|
||||
- title: Built with security in mind
|
||||
details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. You're just as secure as a supported Mac
|
||||
- title: Native OTA updates
|
||||
details: Install updates the moment the come out just like on a supported Mac, and no more 12GB+ updates.
|
||||
- title: Zero firmware patching
|
||||
details: No need to patch APFS ROM support, all protocol upgrades are done in memory and never permanent.
|
||||
footer: Copyright © Dortania 2020-2021
|
||||
---
|
||||
19
docs/START.md
Normal file
19
docs/START.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# What is OpenCore?
|
||||
|
||||
This is a sophisticated boot loader used to inject and patch data in memory, instead of on disk. This means we're able to get near-native experience on many unsupported Macs with Metal GPUs. This includes many of the long desired features of other patchers such as:
|
||||
|
||||
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
|
||||
* Native OTA OS DELTA updates on all Macs
|
||||
* Recovery OS, Safe Mode and Single-user Mode booting
|
||||
|
||||
While many PC users from the Hackintosh community are familiar with OpenCore, OpenCore was designed as Mac and PC agnostic ensuring both platforms can use it easily. And with OpenCore Legacy Patcher, we help automate the process making running with OpenCore that much easier.
|
||||
|
||||
## How do I get started?
|
||||
|
||||
1. The first step of ensuring whether your model is support is checking here:
|
||||
|
||||
* [Supported Models](./MODELS.md)
|
||||
|
||||
2. [Download and build macOS Installer](./INSTALLER.md)
|
||||
3. [Run the `OpenCore-Patcher.app`](./BUILD.md)
|
||||
4. [Reboot and boot OpenCore](./BOOT.md)
|
||||
11
docs/UNINSTALL.md
Normal file
11
docs/UNINSTALL.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Uninstalling OpenCore
|
||||
|
||||
To remove OpenCore is actually quite simply:
|
||||
|
||||
1. Remove OpenCore either from the USB or internal drive
|
||||
* You'll need to mount the drive's EFI partition, and delete the EFI folder
|
||||
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
|
||||
2. Reset NVRAM
|
||||
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
|
||||
|
||||
Know that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the prohibited symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
|
||||
@@ -1 +0,0 @@
|
||||
theme: jekyll-theme-minimal
|
||||
12795
docs/package-lock.json
generated
Normal file
12795
docs/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
docs/package.json
Normal file
51
docs/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "OpenCore-Legacy-Patcher",
|
||||
"version": "0.0.1",
|
||||
"description": "Guide to put macOS on unsupported devices",
|
||||
"main": "",
|
||||
"author": {
|
||||
"name": "Dortania",
|
||||
"url": "https://github.com/dortania"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/dortania/OpenCore-Legacy-Patcher.git"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "vuepress dev",
|
||||
"build": "vuepress build",
|
||||
"fix-lint": "run-script-os",
|
||||
"fix-lint:default": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
|
||||
"fix-lint:win32": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
|
||||
"lint": "run-script-os",
|
||||
"lint:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
|
||||
"lint:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
|
||||
"lint-ci": "run-script-os",
|
||||
"lint-ci:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
|
||||
"lint-ci:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
|
||||
"sort-dict": "node ./scripts/sortDict.js",
|
||||
"spellcheck": "run-script-os",
|
||||
"spellcheck:default": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files '**/*.md' && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
|
||||
"spellcheck:win32": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files **/*.md && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
|
||||
"test": "run-script-os",
|
||||
"test:default": "npm run lint --silent; npm run spellcheck --silent",
|
||||
"test:win32": "npm run lint --silent & npm run spellcheck --silent"
|
||||
},
|
||||
"license": "CC-BY-NC-SA-4.0",
|
||||
"devDependencies": {
|
||||
"@vuepress/plugin-back-to-top": "^1.7.1",
|
||||
"markdown-it-multimd-table": "^4.0.3",
|
||||
"markdown-link-check": "^3.8.5",
|
||||
"markdownlint-cli": "^0.26.0",
|
||||
"run-script-os": "^1.1.4",
|
||||
"spellchecker-cli": "^4.4.0",
|
||||
"vuepress": "^1.7.1",
|
||||
"vuepress-plugin-medium-zoom": "^1.1.9",
|
||||
"vuepress-plugin-zooming": "^1.1.8",
|
||||
"vuepress-theme-book": "0.0.5",
|
||||
"vuepress-theme-dark-new": "^0.1.2",
|
||||
"vuepress-theme-succinct": "^1.6.4",
|
||||
"vuepress-theme-yuu": "^2.3.0"
|
||||
},
|
||||
"homepage": "https://dortania.github.io/OpenCore-Legacy-Patcher/"
|
||||
}
|
||||
9
docs/scripts/linkcheck.py
Normal file
9
docs/scripts/linkcheck.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
for i in [i for i in list(Path().resolve().glob("**/*.md")) if "node_modules" not in str(i.parent) and "_book" not in str(i.parent)]:
|
||||
#bert = subprocess.run(['npx', 'markdown-link-check', '"' + str(i) + '"', '-c', '.markdownlinkcheck.json'], capture_output=True, shell=True, cwd=Path().resolve())
|
||||
bert = subprocess.run('npx markdown-link-check "' + str(i) + '"', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=Path().resolve())
|
||||
outpot = bert.stdout.decode().replace("\r", "").split("\n")
|
||||
outpot = [i for i in outpot if ("FILE: " in i or " → Status: " in i) and " → Status: 429" not in i]
|
||||
[print(i) for i in outpot]
|
||||
26
docs/scripts/sortDict.js
Normal file
26
docs/scripts/sortDict.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const fs = require("fs");
|
||||
|
||||
process.chdir(__dirname);
|
||||
|
||||
console.log("Reading dictionary.txt");
|
||||
let dictionary = fs.readFileSync("../dictionary/dictionary.txt", { encoding: "UTF8" })
|
||||
.replace("\r", "").split("\n");
|
||||
|
||||
let ocDictionary = fs.readFileSync("../dictionary/opencorekeys.txt", { encoding: "UTF8" })
|
||||
.replace("\r", "").split("\n");
|
||||
|
||||
dictionary = dictionary.filter(string => string != "");
|
||||
ocDictionary = ocDictionary.filter(string => string != "");
|
||||
|
||||
dictionary = dictionary.filter((string, index) => dictionary.indexOf(string) == index);
|
||||
ocDictionary = ocDictionary.filter((string, index) => ocDictionary.indexOf(string) == index);
|
||||
|
||||
dictionary = dictionary.filter(string => !ocDictionary.includes(string));
|
||||
|
||||
console.log("Sorting...");
|
||||
dictionary.sort();
|
||||
ocDictionary.sort();
|
||||
|
||||
console.log("Writing dictionary.txt");
|
||||
fs.writeFileSync("../dictionary/dictionary.txt", dictionary.join("\n"));
|
||||
fs.writeFileSync("../dictionary/opencorekeys.txt", ocDictionary.join("\n"));
|
||||
Reference in New Issue
Block a user