├── .github └── FUNDING.yml ├── CREDITS.md ├── LICENSE ├── README.md ├── config-custom-nosip.plist ├── config-custom-sonoma.plist ├── config-custom.plist ├── config-legacy.plist ├── config-nopicker-custom.plist ├── config-nopicker-legacy.plist ├── config-nopicker-sonoma.plist ├── generate-specific-bootdisk.sh ├── generate-unique-machine-values.sh ├── opencore-image-ng-linux.sh ├── opencore-image-ng.sh └── running-mac-inside-docker-qemu.png /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: sickcodes 4 | -------------------------------------------------------------------------------- /CREDITS.md: -------------------------------------------------------------------------------- 1 | [https://github.com/ivankoma](https://github.com/ivankoma) - Empty ROM data in config.plist #14 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OSX Serial Generator 2 | 3 | ![Running mac osx in a docker container](/running-mac-inside-docker-qemu.png?raw=true "OSX KVM DOCKER") 4 | 5 | Generate macOS valid serials, uuids, and board serials for good-faith Security Research & Apple Bug Bounty Research. 6 | 7 | This project provides two tools for generating serial numbers for Hackintosh, [OpenCore](https://github.com/acidanthera/OpenCorePkg), [Docker-OSX](https://github.com/sickcodes/Docker-OSX) and [OSX-KVM](https://github.com/kholia/OSX-KVM). 8 | 9 | Author: Sick.Codes https://github.com/sickcodes | https://sick.codes | https://twitter.com/sickcodes 10 | 11 | ### Follow @sickcodes on Twitter for updates! [https://twitter.com/sickcodes](https://twitter.com/sickcodes) 12 | 13 | Terms & Conditions: Manipulation of serial numbers are an important aspect of conducting Cyber Security Research into the iMessage & Facetime frameworks. Finding and reporting vulnerabilities in Apple software before Threat Actors do is important. To use this project to find & discover vulnerabilities in said protocols, you should agree to [Apple's Security Bounty program](https://developer.apple.com/security-bounty/requirements/). 14 | 15 | ### Upstream Thanks 16 | 17 | This project was created for use with [Docker-OSX](https://github.com/sickcodes/Docker-OSX) and uses `config.plist` files from [@Kholia](https://github.com/kholia)'s project https://github.com/kholia/OSX-KVM. 18 | 19 | The `config.plist` files are also curated and maintained upstream by [@thenickdude](https://github.com/thenickdude) and we thank both of them for their excellent work. Upstream KVM changes are made at: [https://github.com/thenickdude/KVM-Opencore](https://github.com/thenickdude/KVM-Opencore) 20 | 21 | This project is a wrapper for the [OpenCore project](https://dortania.github.io/getting-started/) bootloader's fantastic tool called [macserial](https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macserial). 22 | 23 | Many thanks to the [OpenCore Project](https://dortania.github.io/getting-started/) for providing `macserial`. 24 | 25 | See the project which drives Hackintosh: [https://github.com/acidanthera/OpenCorePkg](https://github.com/acidanthera/OpenCorePkg) 26 | 27 | As seen on Vice: [Open-Source App Lets Anyone Create a Virtual Army of Hackintoshes](https://www.vice.com/en/article/akdmb8/open-source-app-lets-anyone-create-a-virtual-army-of-hackintoshes) 28 | 29 | ### PR & Contributor Credits 30 | 31 | https://github.com/sickcodes/osx-serial-generator/blob/master/CREDITS.md 32 | 33 | ## Related 34 | 35 | - [Docker-OSX](https://github.com/sickcodes/Docker-OSX) 36 | - [OSX-KVM](https://github.com/kholia/OSX-KVM) 37 | - [KVM-Opencore](https://github.com/thenickdude/KVM-Opencore) 38 | - [OpenCore](https://github.com/acidanthera/OpenCorePkg) 39 | - [Hackintosh](https://www.reddit.com/r/hackintosh/) 40 | 41 | # Purpose 42 | 43 | These shell scripts were written by [@sickcodes](https://github.com/sickcodes) [https://twitter.com/sickcodes](https://twitter.com/sickcodes) and were created for automating the generation of unique & valid values at runtime in [Docker-OSX](https://github.com/sickcodes/Docker-OSX). 44 | 45 | This is for generating sets of serial numbers that simply work. 46 | 47 | If this is your first time, just `bash ./generate-unique-machine-values.sh` and you will be given 1 complete serial number set. 48 | 49 | With your new serial numbers, you can: 50 | - put them in your existing `config.plist` and reboot 51 | - tell the script to make a new `OpenCore.qcow2` 52 | - output as TSV and CSV, and more! 53 | - use `--help` to see all available goodies 54 | 55 | Used at runtime in [Docker-OSX](https://github.com/sickcodes/Docker-OSX). 56 | 57 | - [https://github.com/kholia/OSX-KVM](https://github.com/kholia/OSX-KVM): "Run macOS on QEMU/KVM. With OpenCore + Big Sur support now! Only commercial (paid) support is available." 58 | 59 | - [https://github.com/sickcodes/Docker-OSX](https://github.com/sickcodes/Docker-OSX): "Run Mac in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X!" 60 | 61 | - [https://github.com/thenickdude/KVM-Opencore](https://github.com/thenickdude/KVM-Opencore): "OpenCore disk image for Proxmox/QEMU" 62 | 63 | # Requirements 64 | 65 | ```bash 66 | # Ubuntu, Debian, Pop 67 | sudo apt update -y 68 | sudo apt install libguestfs-tools build-essential wget git linux-generic gcc uuid-runtime sudo -y 69 | 70 | # Fedora, RHEL, CentOS 71 | sudo yum install libguestfs libguestfs-tools wget git kernel-devel gcc sudo -y 72 | sudo yum groupinstall 'Development Tools' -y 73 | 74 | # Arch, Manjaro 75 | sudo pacman -Sy libguestfs wget git base-devel linux gcc sudo 76 | 77 | ``` 78 | 79 | # Generating New Unique Serial Numbers 80 | 81 | Example 82 | 83 | ```bash 84 | # make 1 full serial set 85 | ./generate-unique-machine-values.sh \ 86 | -c 1 \ 87 | --model="iMacPro1,1" 88 | ``` 89 | 90 | Done! 91 | 92 | CSV file and TSV file should be saved in your current working directory. 93 | 94 | Slip those values into your config.plist and reboot! 95 | 96 | ## Extended options - Automation? 97 | 98 | ### Need more serials? 99 | 100 | ```bash 101 | git clone https://github.com/sickcodes/osx-serial-generator 102 | cd osx-serial-generator 103 | 104 | # make 100 serial sets 105 | ./generate-unique-machine-values.sh \ 106 | -c 100 \ 107 | --model="iMacPro1,1" 108 | ``` 109 | 110 | ### Want to make 50 OpenCore bootdisks AND 50 output plists? 111 | 112 | ```bash 113 | # make 5 serial sets 114 | # but also make config.plist for each set 115 | # and OpenCore-nopicker.qcow2 for each serial set. 116 | ./generate-unique-machine-values.sh \ 117 | -c 50 \ 118 | --create-plists \ 119 | --create-bootdisks 120 | ``` 121 | 122 | ## Already have your own `config.plist`? 123 | 124 | If you want to automate creating the qcow bootdisk each time, you can use placeholders and let this script build the image each time you change anything. 125 | 126 | If you want to use placeholders, you can supply that to either of the scripts in this repo and use: 127 | 128 | `--custom-plist=./my_config.plist` 129 | 130 | ```bash 131 | # make 5 serial sets 132 | # but also use my config.plist for each set 133 | # AND make qcow2 image for each set! 134 | ./generate-unique-machine-values.sh \ 135 | -c 5 \ 136 | --custom-plist=./my_config.plist \ 137 | --create-bootdisks 138 | ``` 139 | 140 | You can also use an URL for the input plist using: 141 | 142 | `--master-plist-url`. 143 | 144 | Or you can manually enter the values generated above: 145 | 146 | ```xml 147 | MLB 148 | {{BOARD_SERIAL}} 149 | ROM 150 | {{ROM}} 151 | SpoofVendor 152 | 153 | SystemProductName 154 | {{DEVICE_MODEL}} 155 | SystemSerialNumber 156 | {{SERIAL}} 157 | SystemUUID 158 | {{UUID}} 159 | ... 160 | ... 161 | ... 162 | {{WIDTH}}x{{HEIGHT}}@32 163 | ... 164 | ... 165 | ... 166 | boot-args 167 | -v keepsyms=1 tlbto_us=0 vti=9 {{KERNEL_ARGS}} 168 | 169 | ``` 170 | ``` 171 | {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}}, 172 | {{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}, {{KERNEL_ARGS}} 173 | ``` 174 | 175 | ```bash 176 | General options: 177 | --count, -n, -c Number of serials to generate 178 | --model, -m Device model, e.g. 'iMacPro1,1' 179 | --csv Optionally change the CSV output filename 180 | --tsv Optionally change the TSV output filename 181 | --output-dir Optionally change the script output location 182 | --width Resolution x axis length in px, default 1920 183 | --height Resolution y axis length in px, default 1080 184 | --kernel-args Additional boot-args 185 | --master-plist-url Specify an alternative master plist, via URL 186 | --master-plist Optionally change the input plist 187 | --custom-plist Same as --master-plist 188 | --output-bootdisk Optionally change the bootdisk filename 189 | --envs Create all corresponding sourcable envs 190 | --plists Create all corresponding config.plists 191 | --bootdisks Create all corresponding bootdisks [SLOW] 192 | --help, -h, help Display this help and exit 193 | 194 | Additional options only if you are creating ONE serial set: 195 | --output-bootdisk Optionally change the bootdisk filename 196 | --output-env Optionally change the serials env filename 197 | 198 | Custom plist placeholders: 199 | {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}}, 200 | {{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}, {{KERNEL_ARGS}} 201 | 202 | Example: 203 | ./generate-unique-machine-values.sh --count 1 --plists --bootdisks --envs 204 | 205 | Defaults: 206 | - One serial, for 'iMacPro1,1', in the current working directory 207 | - CSV and TSV output 208 | - plists in ./plists/ & bootdisks in ./bootdisks/ & envs in ./envs 209 | - if you set --bootdisk name, --bootdisks is assumed 210 | - if you set --custom-plist, --plists is assumed 211 | - if you set --output-env, --envs is assumed 212 | 213 | ``` 214 | 215 | # Generating A Bootdisk Using Specific Serial Numbers 216 | 217 | If you already know the serial numbers, or you've generated them above in the past, then you can use this script: 218 | 219 | ```bash 220 | 221 | Required options: 222 | --model Device model, e.g. 'iMacPro1,1' 223 | --serial Device Serial number 224 | --board-serial Main Logic Board Serial number (MLB) 225 | --uuid SMBIOS UUID (SmUUID) 226 | --mac-address Used for both the MAC address and to set ROM 227 | ROM is lowercased sans any colons 228 | Optional options: 229 | --width Resolution x axis length in px, default 1920 230 | --height Resolution y axis length in px, default 1080 231 | --kernel-args Additional boot-args 232 | --master-plist-url Specify an alternative master plist, via URL 233 | --custom-plist 234 | || --master-plist Optionally change the input plist. 235 | --output-bootdisk Optionally change the bootdisk filename 236 | --output-plist Optionally change the output plist filename 237 | --help, -h, help Display this help and exit 238 | 239 | Placeholders: {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}}, {{UUID}}, 240 | {{ROM}}, {{WIDTH}}, {{HEIGHT}}, {{KERNEL_ARGS}} 241 | ``` 242 | 243 | Example using your serials generated earlier: 244 | 245 | ```bash 246 | CUSTOM_PLIST=https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-nopicker-custom.plist 247 | 248 | ./generate-specific-bootdisk.sh \ 249 | --input-plist-url="${CUSTOM_PLIST}" \ 250 | --model iMacPro1,1 \ 251 | --serial C02TW0WAHX87 \ 252 | --board-serial C027251024NJG36UE \ 253 | --uuid 5CCB366D-9118-4C61-A00A-E5BAF3BED451 \ 254 | --mac-address A8:5C:2C:9A:46:2F \ 255 | --output-bootdisk ./OpenCore-nopicker.qcow2 \ 256 | --width 1920 \ 257 | --height 1080 \ 258 | --kernel-args "-pmap_trace" 259 | ``` 260 | 261 | 262 | # Examples from Docker-OSX 263 | 264 | In the case example of why these scripts were written is: 265 | 266 | `GENERATE_UNIQUE` is used as a Docker argument to randomly generate 1 set at runtime, for every new container. 267 | 268 | `GENERATE_SPECIFIC` is used to specify an already known model, serial, board-serial, uuid and MAC address. 269 | 270 | ```bash 271 | [[ "${GENERATE_UNIQUE}" == true ]] && { \ 272 | ./Docker-OSX/custom/generate-unique-machine-values.sh \ 273 | --master-plist-url="${MASTER_PLIST_URL}" \ 274 | --count 1 \ 275 | --tsv ./serial.tsv \ 276 | --bootdisks \ 277 | --width "${WIDTH:-1920}" \ 278 | --height "${HEIGHT:-1080}" \ 279 | --output-bootdisk "${BOOTDISK:=/home/arch/OSX-KVM/OpenCore/OpenCore.qcow2}" \ 280 | --output-env "${ENV:=/env}" \ 281 | ; } \ 282 | ; [[ "${GENERATE_SPECIFIC}" == true ]] && { \ 283 | source "${ENV:=/env}" 2>/dev/null \ 284 | ; ./Docker-OSX/custom/generate-specific-bootdisk.sh \ 285 | --master-plist-url="${MASTER_PLIST_URL}" \ 286 | --model "${DEVICE_MODEL}" \ 287 | --serial "${SERIAL}" \ 288 | --board-serial "${BOARD_SERIAL}" \ 289 | --uuid "${UUID}" \ 290 | --mac-address "${MAC_ADDRESS}" \ 291 | --width "${WIDTH:-1920}" \ 292 | --height "${HEIGHT:-1080}" \ 293 | --output-bootdisk "${BOOTDISK:=/home/arch/OSX-KVM/OpenCore/OpenCore.qcow2}" 294 | ``` 295 | 296 | 297 | # Special Update Notes 298 | 299 | 2021-10-28 - `OpenCore-Catalina/OpenCore.qcow2` was moved to `OpenCore/OpenCore.qcow2` in [https://github.com/kholia/OSX-KVM/commit/1cc6430f96b452cb78b9a079c34bb9933144ce18](https://github.com/kholia/OSX-KVM/commit/1cc6430f96b452cb78b9a079c34bb9933144ce18) 300 | 301 | 302 | 2021-06-15 - On June 15th 2021 we updated the config.plist from v12 to v13 via [@thenickdude](https://github.com/thenickdude)'s upstream `config.plist` files from [KVM-Opencore](https://github.com/thenickdude/KVM-Opencore). 303 | 304 | 305 | ```bash 306 | wget https://github.com/thenickdude/KVM-Opencore/compare/v12...v13.patch 307 | 308 | patch -F 10 -p1 --verbose config-nopicker-custom.plist v12...v13.patch 309 | 310 | patch -F 10 -p1 --verbose config-custom.plist v12...v13.patch 311 | 312 | ``` 313 | 314 | Rejected patch lines: 315 | ```patch 316 | --- EFI/OC/config.plist 317 | +++ EFI/OC/config.plist 318 | @@ -644,43 +644,6 @@ 319 | 320 | Patch 321 | 322 | - 323 | - Arch 324 | - Any 325 | - Base 326 | - _cpu_topology_sort 327 | - Comment 328 | - algrey - cpu_topology_sort -disable _x86_validate_topology 329 | - Count 330 | - 1 331 | - Enabled 332 | - 333 | - Find 334 | - 335 | - 6AAA//8= 336 | - 337 | - Identifier 338 | - kernel 339 | - Limit 340 | - 0 341 | - Mask 342 | - 343 | - /wAA//8= 344 | - 345 | - MaxKernel 346 | - 20.99.99 347 | - MinKernel 348 | - 17.0.0 349 | - Replace 350 | - 351 | - Dx9EAAA= 352 | - 353 | - ReplaceMask 354 | - 355 | - 356 | - Skip 357 | - 0 358 | - 359 | 360 | Arch 361 | Any 362 | @@ -922,17 +891,19 @@ 363 | Arguments 364 | 365 | Auxiliary 366 | - 367 | + 368 | Comment 369 | Memory testing utility 370 | Enabled 371 | 372 | + Flavour 373 | + MemTest 374 | Name 375 | - memcheck 376 | + memtest86 377 | Path 378 | - memcheck/memcheck.efi 379 | + memtest86/BOOTX64.efi 380 | RealPath 381 | - 382 | + 383 | TextMode 384 | 385 | 386 | @@ -981,11 +954,13 @@ 387 | boot-args 388 | keepsyms=1 389 | csr-active-config 390 | - AAAAAA== 391 | + Jg8= 392 | prev-lang:kbd 393 | ZW4tVVM6MA== 394 | run-efi-updater 395 | No 396 | + ForceDisplayRotationInEFI 397 | + 0 398 | 399 | 400 | Delete 401 | --- Makefile 402 | +++ Makefile 403 | @@ -63,7 +63,7 @@ OpenCore-$(RELEASE_VERSION).iso : OpenCore-$(RELEASE_VERSION).dmg 404 | 405 | OpenCoreEFIFolder-$(RELEASE_VERSION).zip : Makefile $(EFI_FILES) 406 | rm -f $@ 407 | - zip -r $@ EFI 408 | + zip -X -r $@ EFI 409 | 410 | %.gz : % 411 | gzip -f --keep $< 412 | --- src/AppleALC 413 | +++ src/AppleALC 414 | @@ -1 +1 @@ 415 | -Subproject commit 3c2f6315e6aed0cc3c45a9f01f84ef42fb497044 416 | +Subproject commit 93be275a4495a1bdb7ff2c3238053f66b9c5195d 417 | --- src/Lilu 418 | +++ src/Lilu 419 | @@ -1 +1 @@ 420 | -Subproject commit 5aeba9f98106a5a8a3057712b74e1608faf5e276 421 | +Subproject commit 614712caa9d84b6e90305839bd74f3872a44a522 422 | --- src/MacKernelSDK 423 | +++ src/MacKernelSDK 424 | @@ -1 +1 @@ 425 | -Subproject commit 2b584e8e2081ed22fc619151518921c8636d4639 426 | +Subproject commit e73a6fcd42c94b6a908ad9fe197034c8f4bf442a 427 | --- src/OcBinaryData 428 | +++ src/OcBinaryData 429 | @@ -1 +1 @@ 430 | -Subproject commit ccf3d0c36784100293ccfb2865e10cd37f7a78ee 431 | +Subproject commit 6dd2d92383edee522052ebbe2c634c92894b37e6 432 | --- src/OpenCorePkg 433 | +++ src/OpenCorePkg 434 | @@ -1 +1 @@ 435 | -Subproject commit 5668fb62b50e8141d93ae6fce3e3fe238822f6ef 436 | +Subproject commit ae515dd0b1efe79940ce94bfd235399ba873a3f0 437 | --- src/VirtualSMC 438 | +++ src/VirtualSMC 439 | @@ -1 +1 @@ 440 | -Subproject commit 2a7455daf65c356c867a1d65b8f2520ae575ee3e 441 | +Subproject commit 30a3fa2bd920a15e41ef1439585bcc19885b89e3 442 | --- src/WhateverGreen 443 | +++ src/WhateverGreen 444 | @@ -1 +1 @@ 445 | -Subproject commit 1daa2563b5e6e40f195aba5dc006e14c1d55dfd6 446 | +Subproject commit 79efd986ac5f4f17e09b880f25ea45be64863b2f 447 | ``` 448 | 449 | Delete lines 641 - 675 in both `config-custom.plist` and `config-nopicker-custom.plist` which is `_cpu_topology_sort`. 450 | 451 | Add 452 | 453 | ```diff 454 | + ForceDisplayRotationInEFI 455 | + 0 456 | ``` 457 | 458 | 459 | ----------------- 460 | 461 | 2021-05-04 - On May 4th 2021 we updated from v11 to v12 via [@thenickdude](https://github.com/thenickdude)'s upstream `config.plist` files from [KVM-Opencore](https://github.com/thenickdude/KVM-Opencore). 462 | 463 | As seen in a PR to OSX-KVM upstream: [https://github.com/kholia/OSX-KVM/pull/173](https://github.com/kholia/OSX-KVM/pull/173) 464 | 465 | ```bash 466 | wget https://github.com/thenickdude/KVM-Opencore/compare/v11...v12.patch 467 | 468 | patch -F 10 -p1 --verbose config-nopicker-custom.plist v11...v12.patch 469 | 470 | patch -F 10 -p1 --verbose config-custom.plist v11...v12.patch 471 | ``` 472 | 473 | Rejected patch lines: 474 | ```patch 475 | --- EFI/OC/config.plist 476 | +++ EFI/OC/config.plist 477 | @@ -224,17 +344,17 @@ 478 | 479 | 480 | Base 481 | - 482 | + \_SB.PCI0.LPCB.HPET 483 | BaseSkip 484 | 0 485 | Comment 486 | - _Q12 to XQ12 487 | + HPET _CRS to XCRS 488 | Count 489 | 1 490 | Enabled 491 | 492 | Find 493 | - X1ExMg== 494 | + X0NSUw== 495 | Limit 496 | 0 497 | Mask 498 | @@ -1056,9 +1302,9 @@ 499 | AppleEvent 500 | Builtin 501 | CustomDelays 502 | - Auto 503 | + 504 | KeyInitialDelay 505 | - 0 506 | + 50 507 | KeySubsequentDelay 508 | 5 509 | PointerSpeedDiv 510 | --- src/OpenCorePkg 511 | +++ src/OpenCorePkg 512 | @@ -1 +1 @@ 513 | -Subproject commit 5cd223f03dd555c2ad0c6f45181808a5105bb605 514 | +Subproject commit 5668fb62b50e8141d93ae6fce3e3fe238822f6ef 515 | ``` 516 | 517 | 518 | 519 | Replaced 520 | ```xml 521 | Comment 522 | _Q12 to XQ12 523 | 524 | ``` 525 | with 526 | ```xml 527 | Base 528 | \_SB.PCI0.LPCB.HPET 529 | BaseSkip 530 | 0 531 | Comment 532 | HPET _CRS to XCRS 533 | ``` 534 | 535 | and 536 | ```diff 537 | - X1ExMg== 538 | + X0NSUw== 539 | ``` 540 | 541 | 542 | Ignored: 543 | ```diff 544 | @@ -1056,9 +1302,9 @@ 545 | AppleEvent 546 | Builtin 547 | CustomDelays 548 | - Auto 549 | + 550 | KeyInitialDelay 551 | - 0 552 | + 50 553 | KeySubsequentDelay 554 | 5 555 | PointerSpeedDiv 556 | ``` 557 | 558 | ----------------- 559 | -------------------------------------------------------------------------------- /config-custom.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ACPI 10 | 11 | Add 12 | 13 | 14 | Comment 15 | My custom DSDT 16 | Enabled 17 | 18 | Path 19 | DSDT.aml 20 | 21 | 22 | Comment 23 | My custom SSDT 24 | Enabled 25 | 26 | Path 27 | SSDT-1.aml 28 | 29 | 30 | Comment 31 | Read the comment in dsl sample 32 | Enabled 33 | 34 | Path 35 | SSDT-ALS0.aml 36 | 37 | 38 | Comment 39 | Read the comment in dsl sample 40 | Enabled 41 | 42 | Path 43 | SSDT-AWAC-DISABLE.aml 44 | 45 | 46 | Comment 47 | Read the comment in dsl sample 48 | Enabled 49 | 50 | Path 51 | SSDT-BRG0.aml 52 | 53 | 54 | Comment 55 | Read the comment in dsl sample 56 | Enabled 57 | 58 | Path 59 | SSDT-EC-USBX.aml 60 | 61 | 62 | Comment 63 | Fake EC and USBX Power 64 | Enabled 65 | 66 | Path 67 | SSDT-EC.aml 68 | 69 | 70 | Comment 71 | Read the comment in dsl sample 72 | Enabled 73 | 74 | Path 75 | SSDT-EHCx-DISABLE.aml 76 | 77 | 78 | Comment 79 | Read the comment in dsl sample 80 | Enabled 81 | 82 | Path 83 | SSDT-IMEI.aml 84 | 85 | 86 | Comment 87 | CPU AGPM Plugin=1 88 | Enabled 89 | 90 | Path 91 | SSDT-PLUG.aml 92 | 93 | 94 | Comment 95 | Read the comment in dsl sample 96 | Enabled 97 | 98 | Path 99 | SSDT-PMC.aml 100 | 101 | 102 | Comment 103 | Read the comment in dsl sample 104 | Enabled 105 | 106 | Path 107 | SSDT-PNLF.aml 108 | 109 | 110 | Comment 111 | Read the comment in dsl sample 112 | Enabled 113 | 114 | Path 115 | SSDT-PNLFCFL.aml 116 | 117 | 118 | Comment 119 | Read the comment in dsl sample 120 | Enabled 121 | 122 | Path 123 | SSDT-RTC0-RANGE.aml 124 | 125 | 126 | Comment 127 | Read the comment in dsl sample 128 | Enabled 129 | 130 | Path 131 | SSDT-RTC0.aml 132 | 133 | 134 | Comment 135 | Read the comment in dsl sample 136 | Enabled 137 | 138 | Path 139 | SSDT-SBUS-MCHC.aml 140 | 141 | 142 | Comment 143 | Read the comment in dsl sample 144 | Enabled 145 | 146 | Path 147 | SSDT-UNC.aml 148 | 149 | 150 | Comment 151 | add DTGP method 152 | Enabled 153 | 154 | Path 155 | SSDT-DTGP.aml 156 | 157 | 158 | Comment 159 | USB 2.0 Injection 160 | Enabled 161 | 162 | Path 163 | SSDT-EHCI.aml 164 | 165 | 166 | Delete 167 | 168 | 169 | All 170 | 171 | Comment 172 | Delete CpuPm 173 | Enabled 174 | 175 | OemTableId 176 | Q3B1UG0AAAA= 177 | TableLength 178 | 0 179 | TableSignature 180 | U1NEVA== 181 | 182 | 183 | All 184 | 185 | Comment 186 | Delete Cpu0Ist 187 | Enabled 188 | 189 | OemTableId 190 | Q3B1MElzdAA= 191 | TableLength 192 | 0 193 | TableSignature 194 | U1NEVA== 195 | 196 | 197 | Patch 198 | 199 | 200 | Base 201 | 202 | BaseSkip 203 | 0 204 | Comment 205 | Replace one byte sequence with another 206 | Count 207 | 0 208 | Enabled 209 | 210 | Find 211 | ESIzRA== 212 | Limit 213 | 0 214 | Mask 215 | 216 | OemTableId 217 | 218 | Replace 219 | RDMiEQ== 220 | ReplaceMask 221 | 222 | Skip 223 | 0 224 | TableLength 225 | 0 226 | TableSignature 227 | 228 | 229 | 230 | Base 231 | \_SB.PCI0.LPCB.HPET 232 | BaseSkip 233 | 0 234 | Comment 235 | HPET _CRS to XCRS 236 | Count 237 | 1 238 | Enabled 239 | 240 | Find 241 | X0NSUw== 242 | Limit 243 | 0 244 | Mask 245 | 246 | OemTableId 247 | 248 | Replace 249 | WENSUw== 250 | ReplaceMask 251 | 252 | Skip 253 | 0 254 | TableLength 255 | 0 256 | TableSignature 257 | 258 | 259 | 260 | Quirks 261 | 262 | FadtEnableReset 263 | 264 | NormalizeHeaders 265 | 266 | RebaseRegions 267 | 268 | ResetHwSig 269 | 270 | ResetLogoStatus 271 | 272 | SyncTableIds 273 | 274 | 275 | 276 | Booter 277 | 278 | MmioWhitelist 279 | 280 | Quirks 281 | 282 | AllowRelocationBlock 283 | 284 | AvoidRuntimeDefrag 285 | 286 | DevirtualiseMmio 287 | 288 | DisableSingleUser 289 | 290 | DisableVariableWrite 291 | 292 | DiscardHibernateMap 293 | 294 | EnableSafeModeSlide 295 | 296 | EnableWriteUnprotector 297 | 298 | ForceBooterSignature 299 | 300 | ForceExitBootServices 301 | 302 | ProtectMemoryRegions 303 | 304 | ProtectSecureBoot 305 | 306 | ProtectUefiServices 307 | 308 | ProvideCustomSlide 309 | 310 | ProvideMaxSlide 311 | 0 312 | RebuildAppleMemoryMap 313 | 314 | ResizeAppleGpuBars 315 | -1 316 | SetupVirtualMap 317 | 318 | SignalAppleOS 319 | 320 | SyncRuntimePermissions 321 | 322 | 323 | 324 | DeviceProperties 325 | 326 | Add 327 | 328 | PciRoot(0x1)/Pci(0x1F,0x0) 329 | 330 | compatible 331 | pci8086,2916 332 | device-id 333 | 334 | FikA 335 | 336 | name 337 | pci8086,2916 338 | 339 | 340 | Delete 341 | 342 | 343 | Kernel 344 | 345 | Add 346 | 347 | 348 | Arch 349 | Any 350 | BundlePath 351 | Lilu.kext 352 | Comment 353 | Patch engine 354 | Enabled 355 | 356 | ExecutablePath 357 | Contents/MacOS/Lilu 358 | MaxKernel 359 | 360 | MinKernel 361 | 8.0.0 362 | PlistPath 363 | Contents/Info.plist 364 | 365 | 366 | Arch 367 | Any 368 | BundlePath 369 | VirtualSMC.kext 370 | Comment 371 | SMC emulator 372 | Enabled 373 | 374 | ExecutablePath 375 | Contents/MacOS/VirtualSMC 376 | MaxKernel 377 | 378 | MinKernel 379 | 8.0.0 380 | PlistPath 381 | Contents/Info.plist 382 | 383 | 384 | Arch 385 | x86_64 386 | BundlePath 387 | WhateverGreen.kext 388 | Comment 389 | Video patches 390 | Enabled 391 | 392 | ExecutablePath 393 | Contents/MacOS/WhateverGreen 394 | MaxKernel 395 | 396 | MinKernel 397 | 10.0.0 398 | PlistPath 399 | Contents/Info.plist 400 | 401 | 402 | Arch 403 | Any 404 | BundlePath 405 | AppleALC.kext 406 | Comment 407 | Audio patches 408 | Enabled 409 | 410 | ExecutablePath 411 | Contents/MacOS/AppleALC 412 | MaxKernel 413 | 414 | MinKernel 415 | 8.0.0 416 | PlistPath 417 | Contents/Info.plist 418 | 419 | 420 | Arch 421 | x86_64 422 | BundlePath 423 | IntelMausi.kext 424 | Comment 425 | Intel Ethernet LAN 426 | Enabled 427 | 428 | ExecutablePath 429 | Contents/MacOS/IntelMausi 430 | MaxKernel 431 | 432 | MinKernel 433 | 13.0.0 434 | PlistPath 435 | Contents/Info.plist 436 | 437 | 438 | Arch 439 | x86_64 440 | BundlePath 441 | Legacy_USB3.kext 442 | Comment 443 | XHC ports configuration 444 | Enabled 445 | 446 | ExecutablePath 447 | 448 | MaxKernel 449 | 450 | MinKernel 451 | 15.0.0 452 | PlistPath 453 | Contents/Info.plist 454 | 455 | 456 | Arch 457 | x86_64 458 | BundlePath 459 | MCEReporterDisabler.kext 460 | Comment 461 | AppleMCEReporter disabler 462 | Enabled 463 | 464 | ExecutablePath 465 | 466 | MaxKernel 467 | 468 | MinKernel 469 | 19.0.0 470 | PlistPath 471 | Contents/Info.plist 472 | 473 | 474 | Arch 475 | x86_64 476 | BundlePath 477 | VoodooPS2Controller.kext 478 | Comment 479 | 480 | Enabled 481 | 482 | ExecutablePath 483 | Contents/MacOS/VoodooPS2Controller 484 | MaxKernel 485 | 486 | MinKernel 487 | 15.0.0 488 | PlistPath 489 | Contents/Info.plist 490 | 491 | 492 | Arch 493 | x86_64 494 | BundlePath 495 | VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext 496 | Comment 497 | 498 | Enabled 499 | 500 | ExecutablePath 501 | Contents/MacOS/VoodooPS2Keyboard 502 | MaxKernel 503 | 504 | MinKernel 505 | 15.0.0 506 | PlistPath 507 | Contents/Info.plist 508 | 509 | 510 | Arch 511 | x86_64 512 | BundlePath 513 | VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext 514 | Comment 515 | 516 | Enabled 517 | 518 | ExecutablePath 519 | Contents/MacOS/VoodooPS2Mouse 520 | MaxKernel 521 | 522 | MinKernel 523 | 15.0.0 524 | PlistPath 525 | Contents/Info.plist 526 | 527 | 528 | Arch 529 | x86_64 530 | BundlePath 531 | VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext 532 | Comment 533 | 534 | Enabled 535 | 536 | ExecutablePath 537 | Contents/MacOS/VoodooPS2Trackpad 538 | MaxKernel 539 | 540 | MinKernel 541 | 15.0.0 542 | PlistPath 543 | Contents/Info.plist 544 | 545 | 546 | Arch 547 | x86_64 548 | BundlePath 549 | VoodooPS2Controller.kext/Contents/PlugIns/VoodooInput.kext 550 | Comment 551 | 552 | Enabled 553 | 554 | ExecutablePath 555 | Contents/MacOS/VoodooInput 556 | MaxKernel 557 | 558 | MinKernel 559 | 15.0.0 560 | PlistPath 561 | Contents/Info.plist 562 | 563 | 564 | Arch 565 | x86_64 566 | BundlePath 567 | USBPorts.kext 568 | Comment 569 | 570 | Enabled 571 | 572 | ExecutablePath 573 | 574 | MaxKernel 575 | 576 | MinKernel 577 | 578 | PlistPath 579 | Contents/Info.plist 580 | 581 | 582 | Arch 583 | x86_64 584 | BundlePath 585 | AGPMInjector.kext 586 | Comment 587 | 588 | Enabled 589 | 590 | ExecutablePath 591 | 592 | MaxKernel 593 | 594 | MinKernel 595 | 596 | PlistPath 597 | Contents/Info.plist 598 | 599 | 600 | Arch 601 | x86_64 602 | BundlePath 603 | BrcmFirmwareData.kext 604 | Comment 605 | Bluetooth firmware 606 | Enabled 607 | 608 | ExecutablePath 609 | Contents/MacOS/BrcmFirmwareData 610 | MaxKernel 611 | 612 | MinKernel 613 | 614 | PlistPath 615 | Contents/Info.plist 616 | 617 | 618 | Arch 619 | x86_64 620 | BundlePath 621 | BrcmNonPatchRAM2.kext 622 | Comment 623 | Bluetooth support for macOS 10.11-10.14 624 | Enabled 625 | 626 | ExecutablePath 627 | Contents/MacOS/BrcmNonPatchRAM2 628 | MaxKernel 629 | 18.99.99 630 | MinKernel 631 | 15.0.0 632 | PlistPath 633 | Contents/Info.plist 634 | 635 | 636 | Arch 637 | x86_64 638 | BundlePath 639 | BrcmPatchRAM2.kext 640 | Comment 641 | Bluetooth support for macOS 10.11-10.14 642 | Enabled 643 | 644 | ExecutablePath 645 | Contents/MacOS/BrcmPatchRAM2 646 | MaxKernel 647 | 18.99.99 648 | MinKernel 649 | 15.0.0 650 | PlistPath 651 | Contents/Info.plist 652 | 653 | 654 | Arch 655 | x86_64 656 | BundlePath 657 | BrcmPatchRAM3.kext 658 | Comment 659 | Bluetooth support for macOS 10.15- 660 | Enabled 661 | 662 | ExecutablePath 663 | Contents/MacOS/BrcmPatchRAM3 664 | MaxKernel 665 | 666 | MinKernel 667 | 19.0.0 668 | PlistPath 669 | Contents/Info.plist 670 | 671 | 672 | Arch 673 | x86_64 674 | BundlePath 675 | BrcmBluetoothInjector.kext 676 | Comment 677 | Bluetooth support for macOS 10.15-11 678 | Enabled 679 | 680 | ExecutablePath 681 | 682 | MaxKernel 683 | 20.99.99 684 | MinKernel 685 | 19.0.0 686 | PlistPath 687 | Contents/Info.plist 688 | 689 | 690 | Arch 691 | x86_64 692 | BundlePath 693 | BlueToolFixup.kext 694 | Comment 695 | Bluetooth support for macOS 12- 696 | Enabled 697 | 698 | ExecutablePath 699 | Contents/MacOS/BlueToolFixup 700 | MaxKernel 701 | 702 | MinKernel 703 | 21.0.0 704 | PlistPath 705 | Contents/Info.plist 706 | 707 | 708 | Arch 709 | x86_64 710 | BundlePath 711 | CryptexFixup.kext 712 | Comment 713 | Support for non-AVX2 CPUs in Ventura 714 | Enabled 715 | 716 | ExecutablePath 717 | Contents/MacOS/CryptexFixup 718 | MaxKernel 719 | 22.99.99 720 | MinKernel 721 | 22.1.0 722 | PlistPath 723 | Contents/Info.plist 724 | 725 | 726 | Block 727 | 728 | 729 | Arch 730 | Any 731 | Comment 732 | 733 | Enabled 734 | 735 | Identifier 736 | com.apple.driver.AppleTyMCEDriver 737 | MaxKernel 738 | 739 | MinKernel 740 | 741 | Strategy 742 | Disable 743 | 744 | 745 | Emulate 746 | 747 | Cpuid1Data 748 | 749 | VAYFAAAAAAAAAAAAAAAAAA== 750 | 751 | Cpuid1Mask 752 | 753 | ////AAAAAAAAAAAAAAAAAA== 754 | 755 | DummyPowerManagement 756 | 757 | MaxKernel 758 | 759 | MinKernel 760 | 761 | 762 | Force 763 | 764 | 765 | Arch 766 | Any 767 | BundlePath 768 | System/Library/Extensions/IONetworkingFamily.kext 769 | Comment 770 | 771 | Enabled 772 | 773 | ExecutablePath 774 | Contents/MacOS/IONetworkingFamily 775 | Identifier 776 | com.apple.iokit.IONetworkingFamily 777 | MaxKernel 778 | 13.99.99 779 | MinKernel 780 | 781 | PlistPath 782 | Contents/Info.plist 783 | 784 | 785 | Patch 786 | 787 | 788 | Arch 789 | x86_64 790 | Base 791 | 792 | Comment 793 | algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN 794 | Count 795 | 1 796 | Enabled 797 | 798 | Find 799 | 800 | MduAPQAAAAAGdQA= 801 | 802 | Identifier 803 | kernel 804 | Limit 805 | 0 806 | Mask 807 | 808 | /////wAAAP///wA= 809 | 810 | MaxKernel 811 | 20.3.99 812 | MinKernel 813 | 17.0.0 814 | Replace 815 | 816 | u7xP6njpXQAAAJA= 817 | 818 | ReplaceMask 819 | 820 | 821 | Skip 822 | 0 823 | 824 | 825 | Arch 826 | x86_64 827 | Base 828 | 829 | Comment 830 | algrey - thenickdude - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN (Big Sur 11.3+, Monterey, Ventura) 831 | Count 832 | 1 833 | Enabled 834 | 835 | Find 836 | 837 | MdKzAYA9AAAAAAZ1 838 | 839 | Identifier 840 | kernel 841 | Limit 842 | 0 843 | Mask 844 | 845 | ////////AAAAAP// 846 | 847 | MaxKernel 848 | 22.99.99 849 | MinKernel 850 | 20.4.0 851 | Replace 852 | 853 | urxP6nizAJCQkJDr 854 | 855 | ReplaceMask 856 | 857 | 858 | Skip 859 | 0 860 | 861 | 862 | Arch 863 | x86_64 864 | Base 865 | _early_random 866 | Comment 867 | SurPlus v1 - PART 1 of 2 - Patch read_erandom (inlined in _early_random) 868 | Count 869 | 1 870 | Enabled 871 | 872 | Find 873 | AHQjSIs= 874 | Identifier 875 | kernel 876 | Limit 877 | 800 878 | Mask 879 | 880 | MaxKernel 881 | 21.1.0 882 | MinKernel 883 | 20.4.0 884 | Replace 885 | AOsjSIs= 886 | ReplaceMask 887 | 888 | Skip 889 | 0 890 | 891 | 892 | Arch 893 | x86_64 894 | Base 895 | _register_and_init_prng 896 | Comment 897 | SurPlus v1 - PART 2 of 2 - Patch register_and_init_prng 898 | Count 899 | 1 900 | Enabled 901 | 902 | Find 903 | ukgBAAAx9g== 904 | Identifier 905 | kernel 906 | Limit 907 | 256 908 | Mask 909 | 910 | MaxKernel 911 | 21.1.0 912 | MinKernel 913 | 20.4.0 914 | Replace 915 | ukgBAADrBQ== 916 | ReplaceMask 917 | 918 | Skip 919 | 0 920 | 921 | 922 | Arch 923 | x86_64 924 | Base 925 | _apfs_filevault_allowed 926 | Comment 927 | Force FileVault on Broken Seal (from OCLP project, for non-AVX2 Ventura patch) 928 | Count 929 | 0 930 | Enabled 931 | 932 | Find 933 | 934 | Identifier 935 | com.apple.filesystems.apfs 936 | Limit 937 | 0 938 | Mask 939 | 940 | MaxKernel 941 | 22.99.99 942 | MinKernel 943 | 22.1.0 944 | Replace 945 | uAEAAADD 946 | ReplaceMask 947 | 948 | Skip 949 | 0 950 | 951 | 952 | Quirks 953 | 954 | AppleCpuPmCfgLock 955 | 956 | AppleXcpmCfgLock 957 | 958 | AppleXcpmExtraMsrs 959 | 960 | AppleXcpmForceBoost 961 | 962 | CustomPciSerialDevice 963 | 964 | CustomSMBIOSGuid 965 | 966 | DisableIoMapper 967 | 968 | DisableLinkeditJettison 969 | 970 | DisableRtcChecksum 971 | 972 | ExtendBTFeatureFlags 973 | 974 | ExternalDiskIcons 975 | 976 | ForceAquantiaEthernet 977 | 978 | ForceSecureBootScheme 979 | 980 | IncreasePciBarSize 981 | 982 | LapicKernelPanic 983 | 984 | LegacyCommpage 985 | 986 | PanicNoKextDump 987 | 988 | PowerTimeoutKernelPanic 989 | 990 | ProvideCurrentCpuInfo 991 | 992 | SetApfsTrimTimeout 993 | 0 994 | ThirdPartyDrives 995 | 996 | XhciPortLimit 997 | 998 | 999 | Scheme 1000 | 1001 | CustomKernel 1002 | 1003 | FuzzyMatch 1004 | 1005 | KernelArch 1006 | Auto 1007 | KernelCache 1008 | Auto 1009 | 1010 | 1011 | Misc 1012 | 1013 | BlessOverride 1014 | 1015 | Boot 1016 | 1017 | ConsoleAttributes 1018 | 0 1019 | HibernateMode 1020 | Auto 1021 | HideAuxiliary 1022 | 1023 | LauncherOption 1024 | Disabled 1025 | LauncherPath 1026 | Default 1027 | PickerAttributes 1028 | 17 1029 | PickerAudioAssist 1030 | 1031 | PickerMode 1032 | External 1033 | PickerVariant 1034 | Auto 1035 | PollAppleHotKeys 1036 | 1037 | ShowPicker 1038 | 1039 | TakeoffDelay 1040 | 0 1041 | Timeout 1042 | 45 1043 | 1044 | Debug 1045 | 1046 | AppleDebug 1047 | 1048 | ApplePanic 1049 | 1050 | DisableWatchDog 1051 | 1052 | DisplayDelay 1053 | 0 1054 | DisplayLevel 1055 | 2147483650 1056 | LogModules 1057 | * 1058 | SysReport 1059 | 1060 | Target 1061 | 3 1062 | 1063 | Entries 1064 | 1065 | Security 1066 | 1067 | AllowSetDefault 1068 | 1069 | ApECID 1070 | 0 1071 | AuthRestart 1072 | 1073 | BlacklistAppleUpdate 1074 | 1075 | DmgLoading 1076 | Signed 1077 | EnablePassword 1078 | 1079 | ExposeSensitiveData 1080 | 6 1081 | HaltLevel 1082 | 2147483648 1083 | PasswordHash 1084 | 1085 | PasswordSalt 1086 | 1087 | ScanPolicy 1088 | 2687747 1089 | SecureBootModel 1090 | Disabled 1091 | Vault 1092 | Optional 1093 | 1094 | Serial 1095 | 1096 | Init 1097 | 1098 | Override 1099 | 1100 | 1101 | Tools 1102 | 1103 | 1104 | Arguments 1105 | 1106 | Auxiliary 1107 | 1108 | Comment 1109 | Not signed for security reasons 1110 | Enabled 1111 | 1112 | Flavour 1113 | OpenShell:UEFIShell:Shell 1114 | FullNvramAccess 1115 | 1116 | Name 1117 | UEFI Shell 1118 | Path 1119 | Shell.efi 1120 | RealPath 1121 | 1122 | TextMode 1123 | 1124 | 1125 | 1126 | Arguments 1127 | 1128 | Auxiliary 1129 | 1130 | Comment 1131 | Memory testing utility 1132 | Enabled 1133 | 1134 | Flavour 1135 | MemTest 1136 | FullNvramAccess 1137 | 1138 | Name 1139 | memtest86 1140 | Path 1141 | memtest86/BOOTX64.efi 1142 | RealPath 1143 | 1144 | TextMode 1145 | 1146 | 1147 | 1148 | Arguments 1149 | Shutdown 1150 | Auxiliary 1151 | 1152 | Comment 1153 | Perform shutdown 1154 | Enabled 1155 | 1156 | Flavour 1157 | Auto 1158 | FullNvramAccess 1159 | 1160 | Name 1161 | Shutdown 1162 | Path 1163 | ResetSystem.efi 1164 | RealPath 1165 | 1166 | TextMode 1167 | 1168 | 1169 | 1170 | 1171 | NVRAM 1172 | 1173 | Add 1174 | 1175 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 1176 | 1177 | DefaultBackgroundColor 1178 | AAAAAA== 1179 | UIScale 1180 | AQ== 1181 | 1182 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 1183 | 1184 | rtc-blacklist 1185 | 1186 | 1187 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 1188 | 1189 | #INFO (prev-lang:kbd) 1190 | en:252 (ABC), set 656e3a323532 1191 | ForceDisplayRotationInEFI 1192 | 0 1193 | SystemAudioVolume 1194 | Rg== 1195 | boot-args 1196 | -v keepsyms=1 tlbto_us=0 vti=9 1197 | csr-active-config 1198 | ZwAAAA== 1199 | prev-lang:kbd 1200 | ZW4tVVM6MA== 1201 | run-efi-updater 1202 | No 1203 | 1204 | 1205 | Delete 1206 | 1207 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 1208 | 1209 | UIScale 1210 | DefaultBackgroundColor 1211 | 1212 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 1213 | 1214 | rtc-blacklist 1215 | 1216 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 1217 | 1218 | boot-args 1219 | ForceDisplayRotationInEFI 1220 | 1221 | 1222 | LegacyOverwrite 1223 | 1224 | LegacySchema 1225 | 1226 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 1227 | 1228 | EFILoginHiDPI 1229 | EFIBluetoothDelay 1230 | LocationServicesEnabled 1231 | SystemAudioVolume 1232 | SystemAudioVolumeDB 1233 | SystemAudioVolumeSaved 1234 | bluetoothActiveControllerInfo 1235 | bluetoothInternalControllerInfo 1236 | flagstate 1237 | fmm-computer-name 1238 | fmm-mobileme-token-FMM 1239 | fmm-mobileme-token-FMM-BridgeHasAccount 1240 | nvda_drv 1241 | prev-lang:kbd 1242 | 1243 | 8BE4DF61-93CA-11D2-AA0D-00E098032B8C 1244 | 1245 | Boot0080 1246 | Boot0081 1247 | Boot0082 1248 | BootNext 1249 | BootOrder 1250 | 1251 | 1252 | WriteFlash 1253 | 1254 | 1255 | PlatformInfo 1256 | 1257 | Automatic 1258 | 1259 | CustomMemory 1260 | 1261 | Generic 1262 | 1263 | AdviseFeatures 1264 | 1265 | MaxBIOSVersion 1266 | 1267 | MLB 1268 | {{BOARD_SERIAL}} 1269 | ProcessorType 1270 | 0 1271 | ROM 1272 | {{ROM}} 1273 | SpoofVendor 1274 | 1275 | SystemMemoryStatus 1276 | Auto 1277 | SystemProductName 1278 | {{DEVICE_MODEL}} 1279 | SystemSerialNumber 1280 | {{SERIAL}} 1281 | SystemUUID 1282 | {{UUID}} 1283 | 1284 | UpdateDataHub 1285 | 1286 | UpdateNVRAM 1287 | 1288 | UpdateSMBIOS 1289 | 1290 | UpdateSMBIOSMode 1291 | Create 1292 | UseRawUuidEncoding 1293 | 1294 | 1295 | UEFI 1296 | 1297 | APFS 1298 | 1299 | EnableJumpstart 1300 | 1301 | GlobalConnect 1302 | 1303 | HideVerbose 1304 | 1305 | JumpstartHotPlug 1306 | 1307 | MinDate 1308 | -1 1309 | MinVersion 1310 | -1 1311 | 1312 | AppleInput 1313 | 1314 | AppleEvent 1315 | Builtin 1316 | CustomDelays 1317 | 1318 | GraphicsInputMirroring 1319 | 1320 | KeyInitialDelay 1321 | 50 1322 | KeySubsequentDelay 1323 | 5 1324 | PointerPollMask 1325 | -1 1326 | PointerPollMax 1327 | 80 1328 | PointerPollMin 1329 | 10 1330 | PointerSpeedDiv 1331 | 1 1332 | PointerSpeedMul 1333 | 1 1334 | 1335 | Audio 1336 | 1337 | AudioCodec 1338 | 0 1339 | AudioDevice 1340 | 1341 | AudioOutMask 1342 | 1 1343 | AudioSupport 1344 | 1345 | DisconnectHda 1346 | 1347 | MaximumGain 1348 | -15 1349 | MinimumAssistGain 1350 | -30 1351 | MinimumAudibleGain 1352 | -55 1353 | PlayChime 1354 | Auto 1355 | ResetTrafficClass 1356 | 1357 | SetupDelay 1358 | 0 1359 | 1360 | ConnectDrivers 1361 | 1362 | Drivers 1363 | 1364 | 1365 | Arguments 1366 | 1367 | Comment 1368 | 1369 | Enabled 1370 | 1371 | Path 1372 | OpenVariableRuntimeDxe.efi 1373 | 1374 | 1375 | Arguments 1376 | 1377 | Comment 1378 | 1379 | Enabled 1380 | 1381 | Path 1382 | OpenRuntime.efi 1383 | 1384 | 1385 | Arguments 1386 | 1387 | Comment 1388 | HFS+ Driver 1389 | Enabled 1390 | 1391 | Path 1392 | OpenHfsPlus.efi 1393 | 1394 | 1395 | Arguments 1396 | 1397 | Comment 1398 | 1399 | Enabled 1400 | 1401 | Path 1402 | OpenCanopy.efi 1403 | 1404 | 1405 | Arguments 1406 | 1407 | Comment 1408 | 1409 | Enabled 1410 | 1411 | Path 1412 | AudioDxe.efi 1413 | 1414 | 1415 | Arguments 1416 | 1417 | Comment 1418 | 1419 | Enabled 1420 | 1421 | Path 1422 | OpenPartitionDxe.efi 1423 | 1424 | 1425 | Arguments 1426 | 1427 | Comment 1428 | 1429 | Enabled 1430 | 1431 | Path 1432 | OpenUsbKbDxe.efi 1433 | 1434 | 1435 | Arguments 1436 | 1437 | Comment 1438 | 1439 | Enabled 1440 | 1441 | Path 1442 | UsbMouseDxe.efi 1443 | 1444 | 1445 | Arguments 1446 | 1447 | Comment 1448 | 1449 | Enabled 1450 | 1451 | Path 1452 | Ps2KeyboardDxe.efi 1453 | 1454 | 1455 | Arguments 1456 | 1457 | Comment 1458 | 1459 | Enabled 1460 | 1461 | Path 1462 | Ps2MouseDxe.efi 1463 | 1464 | 1465 | Arguments 1466 | 1467 | Comment 1468 | 1469 | Enabled 1470 | 1471 | Path 1472 | HiiDatabase.efi 1473 | 1474 | 1475 | Arguments 1476 | 1477 | Comment 1478 | 1479 | Enabled 1480 | 1481 | Path 1482 | NvmExpressDxe.efi 1483 | 1484 | 1485 | Arguments 1486 | 1487 | Comment 1488 | 1489 | Enabled 1490 | 1491 | Path 1492 | XhciDxe.efi 1493 | 1494 | 1495 | Arguments 1496 | 1497 | Comment 1498 | 1499 | Enabled 1500 | 1501 | Path 1502 | ExFatDxe.efi 1503 | 1504 | 1505 | Arguments 1506 | 1507 | Comment 1508 | 1509 | Enabled 1510 | 1511 | Path 1512 | CrScreenshotDxe.efi 1513 | 1514 | 1515 | Arguments 1516 | 1517 | Comment 1518 | 1519 | Enabled 1520 | 1521 | Path 1522 | Ext4Dxe.efi 1523 | 1524 | 1525 | Arguments 1526 | 1527 | Comment 1528 | 1529 | Enabled 1530 | 1531 | Path 1532 | OpenLinuxBoot.efi 1533 | 1534 | 1535 | Input 1536 | 1537 | KeyFiltering 1538 | 1539 | KeyForgetThreshold 1540 | 5 1541 | KeySupport 1542 | 1543 | KeySupportMode 1544 | Auto 1545 | KeySwap 1546 | 1547 | PointerSupport 1548 | 1549 | PointerSupportMode 1550 | ASUS 1551 | TimerResolution 1552 | 50000 1553 | 1554 | Output 1555 | 1556 | ClearScreenOnModeSwitch 1557 | 1558 | ConsoleMode 1559 | 1560 | DirectGopRendering 1561 | 1562 | ForceResolution 1563 | 1564 | GopPassThrough 1565 | Disabled 1566 | IgnoreTextInGraphics 1567 | 1568 | ProvideConsoleGop 1569 | 1570 | ReconnectGraphicsOnConnect 1571 | 1572 | ReconnectOnResChange 1573 | 1574 | ReplaceTabWithSpace 1575 | 1576 | Resolution 1577 | {{WIDTH}}x{{HEIGHT}}@32 1578 | SanitiseClearScreen 1579 | 1580 | TextRenderer 1581 | BuiltinGraphics 1582 | UIScale 1583 | 0 1584 | UgaPassThrough 1585 | 1586 | 1587 | ProtocolOverrides 1588 | 1589 | AppleAudio 1590 | 1591 | AppleBootPolicy 1592 | 1593 | AppleDebugLog 1594 | 1595 | AppleEg2Info 1596 | 1597 | AppleFramebufferInfo 1598 | 1599 | AppleImageConversion 1600 | 1601 | AppleImg4Verification 1602 | 1603 | AppleKeyMap 1604 | 1605 | AppleRtcRam 1606 | 1607 | AppleSecureBoot 1608 | 1609 | AppleSmcIo 1610 | 1611 | AppleUserInterfaceTheme 1612 | 1613 | DataHub 1614 | 1615 | DeviceProperties 1616 | 1617 | FirmwareVolume 1618 | 1619 | HashServices 1620 | 1621 | OSInfo 1622 | 1623 | UnicodeCollation 1624 | 1625 | 1626 | Quirks 1627 | 1628 | ActivateHpetSupport 1629 | 1630 | DisableSecurityPolicy 1631 | 1632 | EnableVectorAcceleration 1633 | 1634 | EnableVmx 1635 | 1636 | ExitBootServicesDelay 1637 | 0 1638 | ForceOcWriteFlash 1639 | 1640 | ForgeUefiSupport 1641 | 1642 | IgnoreInvalidFlexRatio 1643 | 1644 | ReleaseUsbOwnership 1645 | 1646 | ReloadOptionRoms 1647 | 1648 | RequestBootVarRouting 1649 | 1650 | ResizeGpuBars 1651 | -1 1652 | TscSyncTimeout 1653 | 0 1654 | UnblockFsConnect 1655 | 1656 | 1657 | ReservedMemory 1658 | 1659 | 1660 | 1661 | 1662 | -------------------------------------------------------------------------------- /config-legacy.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ACPI 6 | 7 | Add 8 | 9 | 10 | Comment 11 | add DTGP method 12 | Enabled 13 | 14 | Path 15 | SSDT-DTGP.aml 16 | 17 | 18 | Comment 19 | Fake EC and USBX Power 20 | Enabled 21 | 22 | Path 23 | SSDT-EC.aml 24 | 25 | 26 | Comment 27 | USB 2.0 Injection 28 | Enabled 29 | 30 | Path 31 | SSDT-EHCI.aml 32 | 33 | 34 | Comment 35 | CPU AGPM Plugin=1 36 | Enabled 37 | 38 | Path 39 | SSDT-PLUG.aml 40 | 41 | 42 | Delete 43 | 44 | 45 | All 46 | 47 | Comment 48 | Delete CpuPm 49 | Enabled 50 | 51 | OemTableId 52 | Q3B1UG0AAAA= 53 | TableLength 54 | 0 55 | TableSignature 56 | U1NEVA== 57 | 58 | 59 | All 60 | 61 | Comment 62 | Delete Cpu0Ist 63 | Enabled 64 | 65 | OemTableId 66 | Q3B1MElzdAA= 67 | TableLength 68 | 0 69 | TableSignature 70 | U1NEVA== 71 | 72 | 73 | Patch 74 | 75 | 76 | Comment 77 | _Q11 to XQ11 78 | Count 79 | 1 80 | Enabled 81 | 82 | Find 83 | X1ExMQ== 84 | Limit 85 | 0 86 | Mask 87 | 88 | OemTableId 89 | 90 | Replace 91 | WFExMQ== 92 | ReplaceMask 93 | 94 | Skip 95 | 0 96 | TableLength 97 | 0 98 | TableSignature 99 | 100 | 101 | 102 | Comment 103 | _Q12 to XQ12 104 | Count 105 | 1 106 | Enabled 107 | 108 | Find 109 | X1ExMg== 110 | Limit 111 | 0 112 | Mask 113 | 114 | OemTableId 115 | 116 | Replace 117 | WFExMg== 118 | ReplaceMask 119 | 120 | Skip 121 | 0 122 | TableLength 123 | 0 124 | TableSignature 125 | 126 | 127 | 128 | Quirks 129 | 130 | FadtEnableReset 131 | 132 | NormalizeHeaders 133 | 134 | RebaseRegions 135 | 136 | ResetHwSig 137 | 138 | ResetLogoStatus 139 | 140 | 141 | 142 | Booter 143 | 144 | MmioWhitelist 145 | 146 | Quirks 147 | 148 | AvoidRuntimeDefrag 149 | 150 | DevirtualiseMmio 151 | 152 | DisableSingleUser 153 | 154 | DisableVariableWrite 155 | 156 | DiscardHibernateMap 157 | 158 | EnableSafeModeSlide 159 | 160 | EnableWriteUnprotector 161 | 162 | ForceExitBootServices 163 | 164 | ProtectMemoryRegions 165 | 166 | ProtectSecureBoot 167 | 168 | ProtectUefiServices 169 | 170 | ProvideCustomSlide 171 | 172 | ProvideMaxSlide 173 | 0 174 | RebuildAppleMemoryMap 175 | 176 | SetupVirtualMap 177 | 178 | SignalAppleOS 179 | 180 | SyncRuntimePermissions 181 | 182 | 183 | 184 | DeviceProperties 185 | 186 | Add 187 | 188 | PciRoot(0x1)/Pci(0x1F,0x0) 189 | 190 | compatible 191 | pci8086,2916 192 | device-id 193 | 194 | FikA 195 | 196 | name 197 | pci8086,2916 198 | 199 | 200 | Delete 201 | 202 | PciRoot(0x0)/Pci(0x1b,0x0) 203 | 204 | MaximumBootBeepVolume 205 | 206 | 207 | 208 | Kernel 209 | 210 | Add 211 | 212 | 213 | Arch 214 | Any 215 | BundlePath 216 | VoodooHDA.kext 217 | Comment 218 | 219 | Enabled 220 | 221 | ExecutablePath 222 | Contents/MacOS/VoodooHDA 223 | MaxKernel 224 | 225 | MinKernel 226 | 227 | PlistPath 228 | Contents/Info.plist 229 | 230 | 231 | Arch 232 | x86_64 233 | BundlePath 234 | Lilu.kext 235 | Comment 236 | Patch engine 237 | Enabled 238 | 239 | ExecutablePath 240 | Contents/MacOS/Lilu 241 | MaxKernel 242 | 243 | MinKernel 244 | 12.0.0 245 | PlistPath 246 | Contents/Info.plist 247 | 248 | 249 | Arch 250 | x86_64 251 | BundlePath 252 | VirtualSMC.kext 253 | Comment 254 | SMC emulator 255 | Enabled 256 | 257 | ExecutablePath 258 | Contents/MacOS/VirtualSMC 259 | MaxKernel 260 | 261 | MinKernel 262 | 12.0.0 263 | PlistPath 264 | Contents/Info.plist 265 | 266 | 267 | Arch 268 | x86_64 269 | BundlePath 270 | WhateverGreen.kext 271 | Comment 272 | Video patches 273 | Enabled 274 | 275 | ExecutablePath 276 | Contents/MacOS/WhateverGreen 277 | MaxKernel 278 | 279 | MinKernel 280 | 12.0.0 281 | PlistPath 282 | Contents/Info.plist 283 | 284 | 285 | BundlePath 286 | AGPMInjector.kext 287 | Comment 288 | 289 | Enabled 290 | 291 | ExecutablePath 292 | 293 | MaxKernel 294 | 295 | MinKernel 296 | 297 | PlistPath 298 | Contents/Info.plist 299 | 300 | 301 | BundlePath 302 | USBPorts.kext 303 | Comment 304 | 305 | Enabled 306 | 307 | ExecutablePath 308 | 309 | MaxKernel 310 | 311 | MinKernel 312 | 313 | PlistPath 314 | Contents/Info.plist 315 | 316 | 317 | Arch 318 | x86_64 319 | BundlePath 320 | MCEReporterDisabler.kext 321 | Comment 322 | AppleMCEReporter disabler 323 | Enabled 324 | 325 | ExecutablePath 326 | 327 | MaxKernel 328 | 329 | MinKernel 330 | 19.0.0 331 | PlistPath 332 | Contents/Info.plist 333 | 334 | 335 | Block 336 | 337 | 338 | Arch 339 | Any 340 | Comment 341 | 342 | Enabled 343 | 344 | Identifier 345 | com.apple.driver.AppleTyMCEDriver 346 | MaxKernel 347 | 348 | MinKernel 349 | 350 | 351 | 352 | Emulate 353 | 354 | Cpuid1Data 355 | 356 | VAYFAAAAAAAAAAAAAAAAAA== 357 | 358 | Cpuid1Mask 359 | 360 | ////AAAAAAAAAAAAAAAAAA== 361 | 362 | 363 | Force 364 | 365 | 366 | Arch 367 | Any 368 | BundlePath 369 | System/Library/Extensions/IONetworkingFamily.kext 370 | Comment 371 | Patch engine 372 | Enabled 373 | 374 | Identifier 375 | com.apple.iokit.IONetworkingFamily 376 | ExecutablePath 377 | Contents/MacOS/IONetworkingFamily 378 | MaxKernel 379 | 13.99.99 380 | MinKernel 381 | 382 | PlistPath 383 | Contents/Info.plist 384 | 385 | 386 | Patch 387 | 388 | 389 | Base 390 | _cpu_topology_sort 391 | Comment 392 | algrey - cpu_topology_sort -disable _x86_validate_topology 393 | Count 394 | 1 395 | Enabled 396 | 397 | Find 398 | 399 | 6AAA//8= 400 | 401 | Identifier 402 | kernel 403 | Limit 404 | 0 405 | Mask 406 | 407 | /wAA//8= 408 | 409 | MaxKernel 410 | 20.99.99 411 | MinKernel 412 | 17.0.0 413 | Replace 414 | 415 | Dx9EAAA= 416 | 417 | ReplaceMask 418 | 419 | 420 | Skip 421 | 0 422 | 423 | 424 | Base 425 | 426 | Comment 427 | algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN 428 | Count 429 | 1 430 | Enabled 431 | 432 | Find 433 | 434 | MduAPQAAAAAGdQA= 435 | 436 | Identifier 437 | kernel 438 | Limit 439 | 0 440 | Mask 441 | 442 | /////wAAAP///wA= 443 | 444 | MaxKernel 445 | 20.99.99 446 | MinKernel 447 | 17.0.0 448 | Replace 449 | 450 | u7xP6njpXQAAAJA= 451 | 452 | ReplaceMask 453 | 454 | 455 | Skip 456 | 0 457 | 458 | 459 | Quirks 460 | 461 | AppleCpuPmCfgLock 462 | 463 | AppleXcpmCfgLock 464 | 465 | AppleXcpmExtraMsrs 466 | 467 | AppleXcpmForceBoost 468 | 469 | CustomSMBIOSGuid 470 | 471 | DisableIoMapper 472 | 473 | DisableLinkeditJettison 474 | 475 | DisableRtcChecksum 476 | 477 | DummyPowerManagement 478 | 479 | ExternalDiskIcons 480 | 481 | IncreasePciBarSize 482 | 483 | LapicKernelPanic 484 | 485 | PanicNoKextDump 486 | 487 | PowerTimeoutKernelPanic 488 | 489 | ThirdPartyDrives 490 | 491 | XhciPortLimit 492 | 493 | 494 | Scheme 495 | 496 | FuzzyMatch 497 | 498 | KernelArch 499 | x86_64 500 | KernelCache 501 | Auto 502 | 503 | 504 | Misc 505 | 506 | BlessOverride 507 | 508 | Boot 509 | 510 | ConsoleAttributes 511 | 0 512 | HibernateMode 513 | Auto 514 | HideAuxiliary 515 | 516 | PickerAttributes 517 | 1 518 | PickerAudioAssist 519 | 520 | PickerMode 521 | External 522 | PollAppleHotKeys 523 | 524 | ShowPicker 525 | 526 | TakeoffDelay 527 | 0 528 | Timeout 529 | 0 530 | 531 | Debug 532 | 533 | AppleDebug 534 | 535 | ApplePanic 536 | 537 | DisableWatchDog 538 | 539 | DisplayDelay 540 | 0 541 | DisplayLevel 542 | 2147483650 543 | SerialInit 544 | 545 | SysReport 546 | 547 | Target 548 | 3 549 | 550 | Entries 551 | 552 | Security 553 | 554 | AllowNvramReset 555 | 556 | AllowSetDefault 557 | 558 | ApECID 559 | 0 560 | AuthRestart 561 | 562 | BootProtect 563 | None 564 | DmgLoading 565 | Signed 566 | EnablePassword 567 | 568 | ExposeSensitiveData 569 | 6 570 | HaltLevel 571 | 2147483648 572 | PasswordHash 573 | 574 | PasswordSalt 575 | 576 | ScanPolicy 577 | 0 578 | SecureBootModel 579 | Disabled 580 | Vault 581 | Optional 582 | 583 | Tools 584 | 585 | 586 | Arguments 587 | 588 | Auxiliary 589 | 590 | Comment 591 | Not signed for security reasons 592 | Enabled 593 | 594 | Name 595 | UEFI Shell 596 | Path 597 | OpenShell.efi 598 | 599 | 600 | Arguments 601 | Shutdown 602 | Auxiliary 603 | 604 | Comment 605 | Perform shutdown 606 | Enabled 607 | 608 | Name 609 | Shutdown 610 | Path 611 | ResetSystem.efi 612 | 613 | 614 | 615 | NVRAM 616 | 617 | Add 618 | 619 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 620 | 621 | DefaultBackgroundColor 622 | AAAAAA== 623 | UIScale 624 | AQ== 625 | 626 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 627 | 628 | rtc-blacklist 629 | 630 | 631 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 632 | 633 | SystemAudioVolume 634 | Rg== 635 | boot-args 636 | -v keepsyms=1 tlbto_us=0 vti=9 {{KERNEL_ARGS}} 637 | run-efi-updater 638 | No 639 | csr-active-config 640 | ZwAAAA== 641 | prev-lang:kbd 642 | ZW4tVVM6MA== 643 | 644 | 645 | Delete 646 | 647 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 648 | 649 | UIScale 650 | DefaultBackgroundColor 651 | 652 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 653 | 654 | rtc-blacklist 655 | 656 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 657 | 658 | boot-args 659 | 660 | 661 | LegacyEnable 662 | 663 | LegacyOverwrite 664 | 665 | LegacySchema 666 | 667 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 668 | 669 | EFILoginHiDPI 670 | EFIBluetoothDelay 671 | LocationServicesEnabled 672 | SystemAudioVolume 673 | SystemAudioVolumeDB 674 | SystemAudioVolumeSaved 675 | bluetoothActiveControllerInfo 676 | bluetoothInternalControllerInfo 677 | flagstate 678 | fmm-computer-name 679 | nvda_drv 680 | prev-lang:kbd 681 | 682 | 8BE4DF61-93CA-11D2-AA0D-00E098032B8C 683 | 684 | Boot0080 685 | Boot0081 686 | Boot0082 687 | BootNext 688 | BootOrder 689 | 690 | 691 | WriteFlash 692 | 693 | 694 | PlatformInfo 695 | 696 | Automatic 697 | 698 | Generic 699 | 700 | AdviseWindows 701 | 702 | MLB 703 | {{BOARD_SERIAL_OLD}} 704 | ROM 705 | 706 | {{ROM}} 707 | 708 | SpoofVendor 709 | 710 | SystemProductName 711 | {{DEVICE_MODEL}} 712 | SystemSerialNumber 713 | {{SERIAL_OLD}} 714 | SystemUUID 715 | {{SYSTEM_UUID_OLD}} 716 | 717 | UpdateDataHub 718 | 719 | UpdateNVRAM 720 | 721 | UpdateSMBIOS 722 | 723 | UpdateSMBIOSMode 724 | Create 725 | 726 | UEFI 727 | 728 | APFS 729 | 730 | EnableJumpstart 731 | 732 | GlobalConnect 733 | 734 | HideVerbose 735 | 736 | JumpstartHotPlug 737 | 738 | MinDate 739 | 0 740 | MinVersion 741 | 0 742 | 743 | Audio 744 | 745 | AudioCodec 746 | 0 747 | AudioDevice 748 | PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x1) 749 | AudioOut 750 | 0 751 | AudioSupport 752 | 753 | MinimumVolume 754 | 20 755 | PlayChime 756 | 757 | VolumeAmplifier 758 | 0 759 | 760 | ConnectDrivers 761 | 762 | Drivers 763 | 764 | VBoxHfs.efi 765 | OpenRuntime.efi 766 | OpenCanopy.efi 767 | #AudioDxe.efi 768 | #OpenUsbKbDxe.efi 769 | #UsbMouseDxe.efi 770 | #Ps2KeyboardDxe.efi 771 | #Ps2MouseDxe.efi 772 | #HiiDatabase.efi 773 | #NvmExpressDxe.efi 774 | #XhciDxe.efi 775 | #ExFatDxe.efi 776 | #PartitionDxe.efi 777 | #CrScreenshotDxe.efi 778 | 779 | Input 780 | 781 | KeyFiltering 782 | 783 | KeyForgetThreshold 784 | 5 785 | KeyMergeThreshold 786 | 2 787 | KeySupport 788 | 789 | KeySupportMode 790 | Auto 791 | KeySwap 792 | 793 | PointerSupport 794 | 795 | PointerSupportMode 796 | ASUS 797 | TimerResolution 798 | 50000 799 | 800 | Output 801 | 802 | ClearScreenOnModeSwitch 803 | 804 | ConsoleMode 805 | 806 | DirectGopRendering 807 | 808 | IgnoreTextInGraphics 809 | 810 | ProvideConsoleGop 811 | 812 | ReconnectOnResChange 813 | 814 | ReplaceTabWithSpace 815 | 816 | Resolution 817 | 1920x1080@32 818 | SanitiseClearScreen 819 | 820 | TextRenderer 821 | BuiltinGraphics 822 | UgaPassThrough 823 | 824 | 825 | ProtocolOverrides 826 | 827 | AppleAudio 828 | 829 | AppleBootPolicy 830 | 831 | AppleDebugLog 832 | 833 | AppleEvent 834 | 835 | AppleFramebufferInfo 836 | 837 | AppleImageConversion 838 | 839 | AppleImg4Verification 840 | 841 | AppleKeyMap 842 | 843 | AppleRtcRam 844 | 845 | AppleSecureBoot 846 | 847 | AppleSmcIo 848 | 849 | AppleUserInterfaceTheme 850 | 851 | DataHub 852 | 853 | DeviceProperties 854 | 855 | FirmwareVolume 856 | 857 | HashServices 858 | 859 | OSInfo 860 | 861 | UnicodeCollation 862 | 863 | 864 | Quirks 865 | 866 | ExitBootServicesDelay 867 | 0 868 | IgnoreInvalidFlexRatio 869 | 870 | ReleaseUsbOwnership 871 | 872 | RequestBootVarRouting 873 | 874 | TscSyncTimeout 875 | 0 876 | UnblockFsConnect 877 | 878 | ConnectDrivers 879 | 880 | 881 | 882 | 883 | -------------------------------------------------------------------------------- /config-nopicker-legacy.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ACPI 6 | 7 | Add 8 | 9 | 10 | Comment 11 | add DTGP method 12 | Enabled 13 | 14 | Path 15 | SSDT-DTGP.aml 16 | 17 | 18 | Comment 19 | Fake EC and USBX Power 20 | Enabled 21 | 22 | Path 23 | SSDT-EC.aml 24 | 25 | 26 | Comment 27 | USB 2.0 Injection 28 | Enabled 29 | 30 | Path 31 | SSDT-EHCI.aml 32 | 33 | 34 | Comment 35 | CPU AGPM Plugin=1 36 | Enabled 37 | 38 | Path 39 | SSDT-PLUG.aml 40 | 41 | 42 | Delete 43 | 44 | 45 | All 46 | 47 | Comment 48 | Delete CpuPm 49 | Enabled 50 | 51 | OemTableId 52 | Q3B1UG0AAAA= 53 | TableLength 54 | 0 55 | TableSignature 56 | U1NEVA== 57 | 58 | 59 | All 60 | 61 | Comment 62 | Delete Cpu0Ist 63 | Enabled 64 | 65 | OemTableId 66 | Q3B1MElzdAA= 67 | TableLength 68 | 0 69 | TableSignature 70 | U1NEVA== 71 | 72 | 73 | Patch 74 | 75 | 76 | Comment 77 | _Q11 to XQ11 78 | Count 79 | 1 80 | Enabled 81 | 82 | Find 83 | X1ExMQ== 84 | Limit 85 | 0 86 | Mask 87 | 88 | OemTableId 89 | 90 | Replace 91 | WFExMQ== 92 | ReplaceMask 93 | 94 | Skip 95 | 0 96 | TableLength 97 | 0 98 | TableSignature 99 | 100 | 101 | 102 | Comment 103 | _Q12 to XQ12 104 | Count 105 | 1 106 | Enabled 107 | 108 | Find 109 | X1ExMg== 110 | Limit 111 | 0 112 | Mask 113 | 114 | OemTableId 115 | 116 | Replace 117 | WFExMg== 118 | ReplaceMask 119 | 120 | Skip 121 | 0 122 | TableLength 123 | 0 124 | TableSignature 125 | 126 | 127 | 128 | Quirks 129 | 130 | FadtEnableReset 131 | 132 | NormalizeHeaders 133 | 134 | RebaseRegions 135 | 136 | ResetHwSig 137 | 138 | ResetLogoStatus 139 | 140 | 141 | 142 | Booter 143 | 144 | MmioWhitelist 145 | 146 | Quirks 147 | 148 | AvoidRuntimeDefrag 149 | 150 | DevirtualiseMmio 151 | 152 | DisableSingleUser 153 | 154 | DisableVariableWrite 155 | 156 | DiscardHibernateMap 157 | 158 | EnableSafeModeSlide 159 | 160 | EnableWriteUnprotector 161 | 162 | ForceExitBootServices 163 | 164 | ProtectMemoryRegions 165 | 166 | ProtectSecureBoot 167 | 168 | ProtectUefiServices 169 | 170 | ProvideCustomSlide 171 | 172 | ProvideMaxSlide 173 | 0 174 | RebuildAppleMemoryMap 175 | 176 | SetupVirtualMap 177 | 178 | SignalAppleOS 179 | 180 | SyncRuntimePermissions 181 | 182 | 183 | 184 | DeviceProperties 185 | 186 | Add 187 | 188 | PciRoot(0x1)/Pci(0x1F,0x0) 189 | 190 | compatible 191 | pci8086,2916 192 | device-id 193 | 194 | FikA 195 | 196 | name 197 | pci8086,2916 198 | 199 | 200 | Delete 201 | 202 | PciRoot(0x0)/Pci(0x1b,0x0) 203 | 204 | MaximumBootBeepVolume 205 | 206 | 207 | 208 | Kernel 209 | 210 | Add 211 | 212 | 213 | Arch 214 | Any 215 | BundlePath 216 | VoodooHDA.kext 217 | Comment 218 | 219 | Enabled 220 | 221 | ExecutablePath 222 | Contents/MacOS/VoodooHDA 223 | MaxKernel 224 | 225 | MinKernel 226 | 227 | PlistPath 228 | Contents/Info.plist 229 | 230 | 231 | Arch 232 | x86_64 233 | BundlePath 234 | Lilu.kext 235 | Comment 236 | Patch engine 237 | Enabled 238 | 239 | ExecutablePath 240 | Contents/MacOS/Lilu 241 | MaxKernel 242 | 243 | MinKernel 244 | 12.0.0 245 | PlistPath 246 | Contents/Info.plist 247 | 248 | 249 | Arch 250 | x86_64 251 | BundlePath 252 | VirtualSMC.kext 253 | Comment 254 | SMC emulator 255 | Enabled 256 | 257 | ExecutablePath 258 | Contents/MacOS/VirtualSMC 259 | MaxKernel 260 | 261 | MinKernel 262 | 12.0.0 263 | PlistPath 264 | Contents/Info.plist 265 | 266 | 267 | Arch 268 | x86_64 269 | BundlePath 270 | WhateverGreen.kext 271 | Comment 272 | Video patches 273 | Enabled 274 | 275 | ExecutablePath 276 | Contents/MacOS/WhateverGreen 277 | MaxKernel 278 | 279 | MinKernel 280 | 12.0.0 281 | PlistPath 282 | Contents/Info.plist 283 | 284 | 285 | BundlePath 286 | AGPMInjector.kext 287 | Comment 288 | 289 | Enabled 290 | 291 | ExecutablePath 292 | 293 | MaxKernel 294 | 295 | MinKernel 296 | 297 | PlistPath 298 | Contents/Info.plist 299 | 300 | 301 | BundlePath 302 | USBPorts.kext 303 | Comment 304 | 305 | Enabled 306 | 307 | ExecutablePath 308 | 309 | MaxKernel 310 | 311 | MinKernel 312 | 313 | PlistPath 314 | Contents/Info.plist 315 | 316 | 317 | Arch 318 | x86_64 319 | BundlePath 320 | MCEReporterDisabler.kext 321 | Comment 322 | AppleMCEReporter disabler 323 | Enabled 324 | 325 | ExecutablePath 326 | 327 | MaxKernel 328 | 329 | MinKernel 330 | 19.0.0 331 | PlistPath 332 | Contents/Info.plist 333 | 334 | 335 | Block 336 | 337 | 338 | Arch 339 | Any 340 | Comment 341 | 342 | Enabled 343 | 344 | Identifier 345 | com.apple.driver.AppleTyMCEDriver 346 | MaxKernel 347 | 348 | MinKernel 349 | 350 | 351 | 352 | Emulate 353 | 354 | Cpuid1Data 355 | 356 | VAYFAAAAAAAAAAAAAAAAAA== 357 | 358 | Cpuid1Mask 359 | 360 | ////AAAAAAAAAAAAAAAAAA== 361 | 362 | 363 | Force 364 | 365 | 366 | Arch 367 | Any 368 | BundlePath 369 | System/Library/Extensions/IONetworkingFamily.kext 370 | Comment 371 | Patch engine 372 | Enabled 373 | 374 | Identifier 375 | com.apple.iokit.IONetworkingFamily 376 | ExecutablePath 377 | Contents/MacOS/IONetworkingFamily 378 | MaxKernel 379 | 13.99.99 380 | MinKernel 381 | 382 | PlistPath 383 | Contents/Info.plist 384 | 385 | 386 | Patch 387 | 388 | 389 | Base 390 | _cpu_topology_sort 391 | Comment 392 | algrey - cpu_topology_sort -disable _x86_validate_topology 393 | Count 394 | 1 395 | Enabled 396 | 397 | Find 398 | 399 | 6AAA//8= 400 | 401 | Identifier 402 | kernel 403 | Limit 404 | 0 405 | Mask 406 | 407 | /wAA//8= 408 | 409 | MaxKernel 410 | 20.99.99 411 | MinKernel 412 | 17.0.0 413 | Replace 414 | 415 | Dx9EAAA= 416 | 417 | ReplaceMask 418 | 419 | 420 | Skip 421 | 0 422 | 423 | 424 | Base 425 | 426 | Comment 427 | algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN 428 | Count 429 | 1 430 | Enabled 431 | 432 | Find 433 | 434 | MduAPQAAAAAGdQA= 435 | 436 | Identifier 437 | kernel 438 | Limit 439 | 0 440 | Mask 441 | 442 | /////wAAAP///wA= 443 | 444 | MaxKernel 445 | 20.99.99 446 | MinKernel 447 | 17.0.0 448 | Replace 449 | 450 | u7xP6njpXQAAAJA= 451 | 452 | ReplaceMask 453 | 454 | 455 | Skip 456 | 0 457 | 458 | 459 | Quirks 460 | 461 | AppleCpuPmCfgLock 462 | 463 | AppleXcpmCfgLock 464 | 465 | AppleXcpmExtraMsrs 466 | 467 | AppleXcpmForceBoost 468 | 469 | CustomSMBIOSGuid 470 | 471 | DisableIoMapper 472 | 473 | DisableLinkeditJettison 474 | 475 | DisableRtcChecksum 476 | 477 | DummyPowerManagement 478 | 479 | ExternalDiskIcons 480 | 481 | IncreasePciBarSize 482 | 483 | LapicKernelPanic 484 | 485 | PanicNoKextDump 486 | 487 | PowerTimeoutKernelPanic 488 | 489 | ThirdPartyDrives 490 | 491 | XhciPortLimit 492 | 493 | 494 | Scheme 495 | 496 | FuzzyMatch 497 | 498 | KernelArch 499 | x86_64 500 | KernelCache 501 | Auto 502 | 503 | 504 | Misc 505 | 506 | BlessOverride 507 | 508 | Boot 509 | 510 | ConsoleAttributes 511 | 0 512 | HibernateMode 513 | Auto 514 | HideAuxiliary 515 | 516 | PickerAttributes 517 | 1 518 | PickerAudioAssist 519 | 520 | PickerMode 521 | External 522 | PollAppleHotKeys 523 | 524 | ShowPicker 525 | 526 | TakeoffDelay 527 | 0 528 | Timeout 529 | 0 530 | 531 | Debug 532 | 533 | AppleDebug 534 | 535 | ApplePanic 536 | 537 | DisableWatchDog 538 | 539 | DisplayDelay 540 | 0 541 | DisplayLevel 542 | 2147483650 543 | SerialInit 544 | 545 | SysReport 546 | 547 | Target 548 | 3 549 | 550 | Entries 551 | 552 | Security 553 | 554 | AllowNvramReset 555 | 556 | AllowSetDefault 557 | 558 | ApECID 559 | 0 560 | AuthRestart 561 | 562 | BootProtect 563 | None 564 | DmgLoading 565 | Signed 566 | EnablePassword 567 | 568 | ExposeSensitiveData 569 | 6 570 | HaltLevel 571 | 2147483648 572 | PasswordHash 573 | 574 | PasswordSalt 575 | 576 | ScanPolicy 577 | 0 578 | SecureBootModel 579 | Disabled 580 | Vault 581 | Optional 582 | 583 | Tools 584 | 585 | 586 | Arguments 587 | 588 | Auxiliary 589 | 590 | Comment 591 | Not signed for security reasons 592 | Enabled 593 | 594 | Name 595 | UEFI Shell 596 | Path 597 | OpenShell.efi 598 | 599 | 600 | Arguments 601 | Shutdown 602 | Auxiliary 603 | 604 | Comment 605 | Perform shutdown 606 | Enabled 607 | 608 | Name 609 | Shutdown 610 | Path 611 | ResetSystem.efi 612 | 613 | 614 | 615 | NVRAM 616 | 617 | Add 618 | 619 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 620 | 621 | DefaultBackgroundColor 622 | AAAAAA== 623 | UIScale 624 | AQ== 625 | 626 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 627 | 628 | rtc-blacklist 629 | 630 | 631 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 632 | 633 | SystemAudioVolume 634 | Rg== 635 | boot-args 636 | -v keepsyms=1 tlbto_us=0 vti=9 {{KERNEL_ARGS}} 637 | run-efi-updater 638 | No 639 | csr-active-config 640 | ZwAAAA== 641 | prev-lang:kbd 642 | ZW4tVVM6MA== 643 | 644 | 645 | Delete 646 | 647 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 648 | 649 | UIScale 650 | DefaultBackgroundColor 651 | 652 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 653 | 654 | rtc-blacklist 655 | 656 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 657 | 658 | boot-args 659 | 660 | 661 | LegacyEnable 662 | 663 | LegacyOverwrite 664 | 665 | LegacySchema 666 | 667 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 668 | 669 | EFILoginHiDPI 670 | EFIBluetoothDelay 671 | LocationServicesEnabled 672 | SystemAudioVolume 673 | SystemAudioVolumeDB 674 | SystemAudioVolumeSaved 675 | bluetoothActiveControllerInfo 676 | bluetoothInternalControllerInfo 677 | flagstate 678 | fmm-computer-name 679 | nvda_drv 680 | prev-lang:kbd 681 | 682 | 8BE4DF61-93CA-11D2-AA0D-00E098032B8C 683 | 684 | Boot0080 685 | Boot0081 686 | Boot0082 687 | BootNext 688 | BootOrder 689 | 690 | 691 | WriteFlash 692 | 693 | 694 | PlatformInfo 695 | 696 | Automatic 697 | 698 | Generic 699 | 700 | AdviseWindows 701 | 702 | MLB 703 | {{BOARD_SERIAL_OLD}} 704 | ROM 705 | 706 | {{ROM}} 707 | 708 | SpoofVendor 709 | 710 | SystemProductName 711 | {{DEVICE_MODEL}} 712 | SystemSerialNumber 713 | {{SERIAL_OLD}} 714 | SystemUUID 715 | {{SYSTEM_UUID_OLD}} 716 | 717 | UpdateDataHub 718 | 719 | UpdateNVRAM 720 | 721 | UpdateSMBIOS 722 | 723 | UpdateSMBIOSMode 724 | Create 725 | 726 | UEFI 727 | 728 | APFS 729 | 730 | EnableJumpstart 731 | 732 | GlobalConnect 733 | 734 | HideVerbose 735 | 736 | JumpstartHotPlug 737 | 738 | MinDate 739 | 0 740 | MinVersion 741 | 0 742 | 743 | Audio 744 | 745 | AudioCodec 746 | 0 747 | AudioDevice 748 | PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x1) 749 | AudioOut 750 | 0 751 | AudioSupport 752 | 753 | MinimumVolume 754 | 20 755 | PlayChime 756 | 757 | VolumeAmplifier 758 | 0 759 | 760 | ConnectDrivers 761 | 762 | Drivers 763 | 764 | VBoxHfs.efi 765 | OpenRuntime.efi 766 | OpenCanopy.efi 767 | #AudioDxe.efi 768 | #OpenUsbKbDxe.efi 769 | #UsbMouseDxe.efi 770 | #Ps2KeyboardDxe.efi 771 | #Ps2MouseDxe.efi 772 | #HiiDatabase.efi 773 | #NvmExpressDxe.efi 774 | #XhciDxe.efi 775 | #ExFatDxe.efi 776 | #PartitionDxe.efi 777 | #CrScreenshotDxe.efi 778 | 779 | Input 780 | 781 | KeyFiltering 782 | 783 | KeyForgetThreshold 784 | 5 785 | KeyMergeThreshold 786 | 2 787 | KeySupport 788 | 789 | KeySupportMode 790 | Auto 791 | KeySwap 792 | 793 | PointerSupport 794 | 795 | PointerSupportMode 796 | ASUS 797 | TimerResolution 798 | 50000 799 | 800 | Output 801 | 802 | ClearScreenOnModeSwitch 803 | 804 | ConsoleMode 805 | 806 | DirectGopRendering 807 | 808 | IgnoreTextInGraphics 809 | 810 | ProvideConsoleGop 811 | 812 | ReconnectOnResChange 813 | 814 | ReplaceTabWithSpace 815 | 816 | Resolution 817 | 1920x1080@32 818 | SanitiseClearScreen 819 | 820 | TextRenderer 821 | BuiltinGraphics 822 | UgaPassThrough 823 | 824 | 825 | ProtocolOverrides 826 | 827 | AppleAudio 828 | 829 | AppleBootPolicy 830 | 831 | AppleDebugLog 832 | 833 | AppleEvent 834 | 835 | AppleFramebufferInfo 836 | 837 | AppleImageConversion 838 | 839 | AppleImg4Verification 840 | 841 | AppleKeyMap 842 | 843 | AppleRtcRam 844 | 845 | AppleSecureBoot 846 | 847 | AppleSmcIo 848 | 849 | AppleUserInterfaceTheme 850 | 851 | DataHub 852 | 853 | DeviceProperties 854 | 855 | FirmwareVolume 856 | 857 | HashServices 858 | 859 | OSInfo 860 | 861 | UnicodeCollation 862 | 863 | 864 | Quirks 865 | 866 | ExitBootServicesDelay 867 | 0 868 | IgnoreInvalidFlexRatio 869 | 870 | ReleaseUsbOwnership 871 | 872 | RequestBootVarRouting 873 | 874 | TscSyncTimeout 875 | 0 876 | UnblockFsConnect 877 | 878 | ConnectDrivers 879 | 880 | 881 | 882 | 883 | -------------------------------------------------------------------------------- /generate-specific-bootdisk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ___ _____ __ ___ _ _ ___ _ 3 | # / _ \/ __\ \/ / / __| ___ _ _(_)__ _| | / __|___ _ _ ___ _ _ __ _| |_ ___ _ _ 4 | # | (_) \__ \> < \__ \/ -_) '_| / _` | | | (_ / -_) ' \/ -_) '_/ _` | _/ _ \ '_| 5 | # \___/|___/_/\_\ |___/\___|_| |_\__,_|_| \___\___|_||_\___|_| \__,_|\__\___/_| 6 | # 7 | # Repo: https://github.com/sickcodes/osx-serial-generator/ 8 | # Title: OSX Serial Generator 9 | # Author: Sick.Codes https://sick.codes/ 10 | # Version: 3.1 11 | # License: GPLv3+ 12 | 13 | set -e 14 | 15 | help_text="Usage: ./generate-specific-bootdisk.sh 16 | 17 | Required options: 18 | --model Device model, e.g. 'iMacPro1,1' 19 | --serial Device Serial number 20 | --board-serial Main Logic Board Serial number (MLB) 21 | --uuid SMBIOS UUID (SmUUID) 22 | --mac-address Used for both the MAC address and to set ROM 23 | ROM is lowercased sans any colons 24 | Optional options: 25 | --width Resolution x axis length in px, default 1920 26 | --height Resolution y axis length in px, default 1080 27 | --kernel-args Additional boot-args 28 | --input-plist-url Specify an alternative master plist, via URL 29 | --master-plist-url Same as above. 30 | --custom-plist Optionally change the input plist. 31 | --master-plist Same as above. 32 | --output-bootdisk Optionally change the bootdisk filename 33 | --output-plist Optionally change the output plist filename 34 | --help, -h, help Display this help and exit 35 | 36 | Placeholders: {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}}, {{UUID}}, 37 | {{ROM}}, {{WIDTH}}, {{HEIGHT}} 38 | 39 | Example: 40 | ./generate-specific-bootdisk.sh \\ 41 | --model iMacPro1,1 \\ 42 | --serial C02TW0WAHX87 \\ 43 | --board-serial C027251024NJG36UE \\ 44 | --uuid 5CCB366D-9118-4C61-A00A-E5BAF3BED451 \\ 45 | --mac-address A8:5C:2C:9A:46:2F \\ 46 | --output-bootdisk ./OpenCore-nopicker.qcow2 \\ 47 | --width 1920 \\ 48 | --height 1080 49 | 50 | Author: Sick.Codes https://sick.codes/ 51 | Project: https://github.com/sickcodes/osx-serial-generator/ 52 | License: GPLv3+ 53 | " 54 | 55 | OPENCORE_IMAGE_MAKER_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/opencore-image-ng.sh' 56 | MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-nopicker-custom.plist' 57 | 58 | # gather arguments 59 | while (( "$#" )); do 60 | case "${1}" in 61 | 62 | --help | -h | h | help ) 63 | echo "${help_text}" && exit 0 64 | ;; 65 | 66 | --model=* | -m=* ) 67 | export DEVICE_MODEL="${1#*=}" 68 | shift 69 | ;; 70 | 71 | --model* | -m* ) 72 | export DEVICE_MODEL="${2}" 73 | shift 74 | shift 75 | ;; 76 | 77 | --serial=* ) 78 | export SERIAL="${1#*=}" 79 | shift 80 | ;; 81 | 82 | --serial* ) 83 | export SERIAL="${2}" 84 | shift 85 | shift 86 | ;; 87 | 88 | --board-serial=* ) 89 | export BOARD_SERIAL="${1#*=}" 90 | shift 91 | ;; 92 | 93 | --board-serial* ) 94 | export BOARD_SERIAL="${2}" 95 | shift 96 | shift 97 | ;; 98 | 99 | --uuid=* ) 100 | export UUID="${1#*=}" 101 | shift 102 | ;; 103 | 104 | --uuid* ) 105 | export UUID="${2}" 106 | shift 107 | shift 108 | ;; 109 | 110 | --mac-address=* ) 111 | export MAC_ADDRESS="${1#*=}" 112 | shift 113 | ;; 114 | 115 | --mac-address* ) 116 | export MAC_ADDRESS="${2}" 117 | shift 118 | shift 119 | ;; 120 | 121 | --width=* ) 122 | export WIDTH="${1#*=}" 123 | shift 124 | ;; 125 | 126 | --width* ) 127 | export WIDTH="${2}" 128 | shift 129 | shift 130 | ;; 131 | 132 | --height=* ) 133 | export HEIGHT="${1#*=}" 134 | shift 135 | ;; 136 | 137 | --height* ) 138 | export HEIGHT="${2}" 139 | shift 140 | shift 141 | ;; 142 | 143 | --output-bootdisk=* ) 144 | export OUTPUT_QCOW="${1#*=}" 145 | shift 146 | ;; 147 | 148 | --output-bootdisk* ) 149 | export OUTPUT_QCOW="${2}" 150 | shift 151 | shift 152 | ;; 153 | 154 | --output-plist=* ) 155 | export OUTPUT_PLIST="${1#*=}" 156 | shift 157 | ;; 158 | 159 | --output-plist* ) 160 | export OUTPUT_PLIST="${2}" 161 | shift 162 | shift 163 | ;; 164 | 165 | --master-plist-url=* | --input-plist-url=* | --custom-plist-url=* ) 166 | export MASTER_PLIST_URL="${1#*=}" 167 | shift 168 | ;; 169 | 170 | --master-plist-url* | --input-plist-url* | --custom-plist-url* ) 171 | export MASTER_PLIST_URL="${2}" 172 | shift 173 | shift 174 | ;; 175 | 176 | --master-plist=* | --input-plist=* | --custom-plist=* ) 177 | export MASTER_PLIST="${1#*=}" 178 | shift 179 | ;; 180 | 181 | --master-plist* | --input-plist* | --custom-plist* ) 182 | export MASTER_PLIST="${2}" 183 | shift 184 | shift 185 | ;; 186 | 187 | *) 188 | echo "Invalid option ${1}. Running with default values..." 189 | shift 190 | ;; 191 | esac 192 | done 193 | 194 | 195 | download_qcow_efi_folder () { 196 | 197 | export EFI_FOLDER=./OpenCore/EFI 198 | export RESOURCES_FOLDER=./resources/OcBinaryData/Resources 199 | 200 | # check if we are inside OSX-KVM already 201 | # if not, download OSX-KVM locally 202 | [ -d ./OpenCore/EFI/ ] || { 203 | [ -d ./OSX-KVM/ ] || git clone --recurse-submodules --depth 1 https://github.com/kholia/OSX-KVM.git 204 | export EFI_FOLDER="./OSX-KVM/${EFI_FOLDER}" 205 | } 206 | 207 | [ -d ./resources/OcBinaryData/Resources/ ] || { 208 | export RESOURCES_FOLDER="./OSX-KVM/${RESOURCES_FOLDER}" 209 | } 210 | 211 | # EFI Shell commands 212 | touch startup.nsh && echo 'fs0:\EFI\BOOT\BOOTx64.efi' > startup.nsh 213 | 214 | cp -a "${EFI_FOLDER}" . 215 | 216 | mkdir -p ./EFI/OC/Resources 217 | 218 | # copy Apple drivers into EFI/OC/Resources 219 | cp -a "${RESOURCES_FOLDER}"/* ./EFI/OC/Resources 220 | } 221 | 222 | generate_bootdisk () { 223 | 224 | # need a config.plist 225 | if [ "${MASTER_PLIST}" ]; then 226 | [ -e "${MASTER_PLIST}" ] || echo "Could not find: ${MASTER_PLIST}" 227 | elif [ "${MASTER_PLIST}" ] && [ "${MASTER_PLIST_URL}" ]; then 228 | echo 'You specified both a custom plist FILE & custom plist URL.' 229 | echo 'Use only one of those options.' 230 | elif [ "${MASTER_PLIST_URL}" ]; then 231 | curl -L -o "${MASTER_PLIST:=./config-custom.plist}" "${MASTER_PLIST_URL}" 232 | else 233 | # default is config-nopicker-custom.plist from OSX-KVM with placeholders used in Docker-OSX 234 | curl -L -o "${MASTER_PLIST:=./config-nopicker-custom.plist}" "${MASTER_PLIST_URL}" 235 | fi 236 | 237 | [ -e ./opencore-image-ng.sh ] \ 238 | || { curl -OL "${OPENCORE_IMAGE_MAKER_URL}" \ 239 | && chmod +x opencore-image-ng.sh ; } 240 | 241 | # plist required for bootdisks, so create anyway. 242 | if [ "${DEVICE_MODEL}" ] \ 243 | && [ "${SERIAL}" ] \ 244 | && [ "${BOARD_SERIAL}" ] \ 245 | && [ "${UUID}" ] \ 246 | && [ "${MAC_ADDRESS}" ]; then 247 | ROM="${MAC_ADDRESS//\:/}" 248 | ROM="$(awk '{print tolower($0)}' <<< "${ROM}")" 249 | sed -e s/\{\{DEVICE_MODEL\}\}/"${DEVICE_MODEL}"/g \ 250 | -e s/\{\{SERIAL\}\}/"${SERIAL}"/g \ 251 | -e s/\{\{BOARD_SERIAL\}\}/"${BOARD_SERIAL}"/g \ 252 | -e s/\{\{UUID\}\}/"${UUID}"/g \ 253 | -e s/\{\{ROM\}\}/"${ROM}"/g \ 254 | -e s/\{\{WIDTH\}\}/"${WIDTH:-1920}"/g \ 255 | -e s/\{\{HEIGHT\}\}/"${HEIGHT:-1080}"/g \ 256 | -e s/\{\{KERNEL_ARGS\}\}/"${KERNEL_ARGS:-}"/g \ 257 | "${MASTER_PLIST}" > ./tmp.config.plist || exit 1 258 | else 259 | cat < < \__ \/ -_) '_| / _` | | | (_ / -_) ' \/ -_) '_/ _` | _/ _ \ '_| 5 | # \___/|___/_/\_\ |___/\___|_| |_\__,_|_| \___\___|_||_\___|_| \__,_|\__\___/_| 6 | # 7 | # Repo: https://github.com/sickcodes/osx-serial-generator/ 8 | # Title: OSX Serial Generator 9 | # Author: Sick.Codes https://sick.codes/ 10 | # Version: 3.1 11 | # License: GPLv3+ 12 | 13 | set -e 14 | 15 | help_text="Usage: ./generate-unique-machine-values.sh 16 | 17 | General options: 18 | --count, -n, -c Number of serials to generate 19 | --model, -m Device model, e.g. 'iMacPro1,1' 20 | --csv Optionally change the CSV output filename 21 | --tsv Optionally change the TSV output filename 22 | --output-dir Optionally change the script output location 23 | --width Resolution x axis length in px, default 1920 24 | --height Resolution y axis length in px, default 1080 25 | --kernel-args Additional boot-args 26 | --input-plist-url Specify an alternative master plist, via URL 27 | --master-plist-url Same as above. 28 | --custom-plist Optionally change the input plist. 29 | --master-plist Same as above. 30 | --output-bootdisk Optionally change the bootdisk filename 31 | --create-envs, --envs Create all corresponding sourcable envs 32 | --create-plists, --plists Create all corresponding config.plists 33 | --create-bootdisks, --bootdisks Create all corresponding bootdisks [SLOW] 34 | --help, -h, help Display this help and exit 35 | 36 | Additional options only if you are creating ONE serial set: 37 | --output-bootdisk Optionally change the bootdisk filename 38 | --output-env Optionally change the serials env filename 39 | 40 | Custom plist placeholders: 41 | {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}}, 42 | {{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}, {{KERNEL_ARGS}} 43 | 44 | Example: 45 | ./generate-unique-machine-values.sh --count 1 --plists --bootdisks --envs 46 | 47 | Defaults: 48 | - One serial, for 'iMacPro1,1', in the current working directory 49 | - CSV and TSV output 50 | - plists in ./plists/ & bootdisks in ./bootdisks/ & envs in ./envs 51 | - if you set --bootdisk name, --bootdisks is assumed 52 | - if you set --custom-plist, --plists is assumed 53 | - if you set --output-env, --envs is assumed 54 | 55 | Author: Sick.Codes https://sick.codes/ 56 | Project: https://github.com/sickcodes/osx-serial-generator/ 57 | License: GPLv3+ 58 | " 59 | 60 | OPENCORE_IMAGE_MAKER_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/opencore-image-ng.sh' 61 | MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-nopicker-custom.plist' 62 | 63 | # gather arguments 64 | while (( "$#" )); do 65 | case "${1}" in 66 | 67 | --help | -h | h | help ) 68 | echo "${help_text}" && exit 0 69 | ;; 70 | 71 | --count=* | -c=* | -n=* ) 72 | export SERIAL_SET_COUNT="${1#*=}" 73 | shift 74 | ;; 75 | 76 | --count* | -c* | -n* ) 77 | export SERIAL_SET_COUNT="${2}" 78 | shift 79 | shift 80 | ;; 81 | 82 | --csv=* ) 83 | export CSV_OUTPUT_FILENAME="${1#*=}" 84 | shift 85 | ;; 86 | 87 | --csv* ) 88 | export CSV_OUTPUT_FILENAME="${2}" 89 | shift 90 | shift 91 | ;; 92 | 93 | --tsv=* ) 94 | export TSV_OUTPUT_FILENAME="${1#*=}" 95 | shift 96 | ;; 97 | 98 | --tsv* ) 99 | export TSV_OUTPUT_FILENAME="${2}" 100 | shift 101 | shift 102 | ;; 103 | 104 | --output-dir=* ) 105 | export OUTPUT_DIRECTORY="${1#*=}" 106 | shift 107 | ;; 108 | 109 | --output-dir* ) 110 | export OUTPUT_DIRECTORY="${2}" 111 | shift 112 | shift 113 | ;; 114 | 115 | --output-bootdisk=* ) 116 | export OUTPUT_BOOTDISK="${1#*=}" 117 | shift 118 | ;; 119 | 120 | --output-bootdisk* ) 121 | export OUTPUT_BOOTDISK="${2}" 122 | shift 123 | shift 124 | ;; 125 | 126 | --output-env=* ) 127 | export OUTPUT_ENV="${1#*=}" 128 | shift 129 | ;; 130 | 131 | --output-env* ) 132 | export OUTPUT_ENV="${2}" 133 | shift 134 | shift 135 | ;; 136 | 137 | --model=* | -m=* ) 138 | export DEVICE_MODEL="${1#*=}" 139 | shift 140 | ;; 141 | 142 | --model* | -m* ) 143 | export DEVICE_MODEL="${2}" 144 | shift 145 | shift 146 | ;; 147 | 148 | --width=* ) 149 | export WIDTH="${1#*=}" 150 | shift 151 | ;; 152 | 153 | --width* ) 154 | export WIDTH="${2}" 155 | shift 156 | shift 157 | ;; 158 | 159 | --height=* ) 160 | export HEIGHT="${1#*=}" 161 | shift 162 | ;; 163 | 164 | --height* ) 165 | export HEIGHT="${2}" 166 | shift 167 | shift 168 | ;; 169 | 170 | --master-plist-url=* | --input-plist-url=* | --custom-plist-url=* ) 171 | export MASTER_PLIST_URL="${1#*=}" 172 | shift 173 | ;; 174 | 175 | --master-plist-url* | --input-plist-url* | --custom-plist-url* ) 176 | export MASTER_PLIST_URL="${2}" 177 | shift 178 | shift 179 | ;; 180 | 181 | --master-plist=* | --input-plist=* | --custom-plist=* ) 182 | export MASTER_PLIST="${1#*=}" 183 | shift 184 | ;; 185 | 186 | --master-plist* | --input-plist* | --custom-plist* ) 187 | export MASTER_PLIST="${2}" 188 | shift 189 | shift 190 | ;; 191 | 192 | --create-plists | --plists ) 193 | export CREATE_PLISTS=1 194 | shift 195 | ;; 196 | 197 | --create-bootdisks | --bootdisks ) 198 | export CREATE_BOOTDISKS=1 199 | shift 200 | ;; 201 | 202 | --create-envs | --envs ) 203 | export CREATE_ENVS=1 204 | shift 205 | ;; 206 | 207 | *) 208 | echo "Invalid option. Running with default values..." 209 | shift 210 | ;; 211 | esac 212 | done 213 | 214 | 215 | build_mac_serial () { 216 | [ -d ./OpenCorePkg ] || git clone --depth 1 https://github.com/acidanthera/OpenCorePkg.git 217 | make -C ./OpenCorePkg/Utilities/macserial/ 218 | mv ./OpenCorePkg/Utilities/macserial/macserial . 219 | chmod +x ./macserial 220 | stat ./macserial 221 | } 222 | 223 | download_vendor_mac_addresses () { 224 | # download the MAC Address vendor list 225 | [ -e "${MAC_ADDRESSES_FILE:=vendor_macs.tsv}" ] || curl -L -o "${MAC_ADDRESSES_FILE}" https://gitlab.com/wireshark/wireshark/-/raw/release-3.6/manuf 226 | } 227 | 228 | download_qcow_efi_folder () { 229 | 230 | export EFI_FOLDER=./OpenCore/EFI 231 | export RESOURCES_FOLDER=./resources/OcBinaryData/Resources 232 | 233 | # check if we are inside OSX-KVM already 234 | # if not, download OSX-KVM locally 235 | [ -d ./OpenCore/EFI/ ] || { 236 | [ -d ./OSX-KVM/ ] || git clone --recurse-submodules --depth 1 https://github.com/kholia/OSX-KVM.git 237 | export EFI_FOLDER="./OSX-KVM/${EFI_FOLDER}" 238 | } 239 | 240 | [ -d ./resources/OcBinaryData/Resources/ ] || { 241 | export RESOURCES_FOLDER="./OSX-KVM/${RESOURCES_FOLDER}" 242 | } 243 | 244 | # EFI Shell commands 245 | touch startup.nsh && echo 'fs0:\EFI\BOOT\BOOTx64.efi' > startup.nsh 246 | 247 | cp -a "${EFI_FOLDER}" . 248 | 249 | mkdir -p ./EFI/OC/Resources 250 | 251 | # copy Apple drivers into EFI/OC/Resources 252 | cp -a "${RESOURCES_FOLDER}"/* ./EFI/OC/Resources 253 | } 254 | 255 | 256 | generate_serial_sets () { 257 | 258 | 259 | 260 | if [ "${CSV_OUTPUT_FILENAME}" ]; then 261 | [ "${CSV_OUTPUT_FILENAME}" ] && export CSV_SERIAL_SETS_FILE="${CSV_OUTPUT_FILENAME}" 262 | else 263 | export CSV_SERIAL_SETS_FILE="${OUTPUT_DIRECTORY}/serial_sets-${DATE_NOW}.csv" 264 | fi 265 | 266 | if [ "${TSV_OUTPUT_FILENAME}" ]; then 267 | [ "${TSV_OUTPUT_FILENAME}" ] && export TSV_SERIAL_SETS_FILE="${TSV_OUTPUT_FILENAME}" 268 | else 269 | export TSV_SERIAL_SETS_FILE="${OUTPUT_DIRECTORY}/serial_sets-${DATE_NOW}.tsv" 270 | fi 271 | 272 | 273 | ./macserial \ 274 | --num "${SERIAL_SET_COUNT}" \ 275 | --model "${DEVICE_MODEL}" \ 276 | | while IFS='\ \|\ ' read -r SERIAL BOARD_SERIAL; do 277 | # make a uuid... 278 | UUID="$(uuidgen)" 279 | # bash 3-5 compatible 280 | # UUID="${UUID^^}" 281 | UUID="$(tr '[:lower:]' '[:upper:]' <<< "${UUID}")" 282 | 283 | # get a random vendor specific MAC address. 284 | RANDOM_MAC_PREFIX="$(grep -e "${VENDOR_REGEX}" < "${MAC_ADDRESSES_FILE:=vendor_macs.tsv}" | sort --random-sort | head -n1)" 285 | RANDOM_MAC_PREFIX="$(cut -d$'\t' -f1 <<< "${RANDOM_MAC_PREFIX}")" 286 | MAC_ADDRESS="$(printf "${RANDOM_MAC_PREFIX}:%02X:%02X:%02X" "$((RANDOM%256))" "$((RANDOM%256))" "$((RANDOM%256))")" 287 | 288 | [ -z "${WIDTH}" ] && WIDTH=1920 289 | [ -z "${HEIGHT}" ] && HEIGHT=1080 290 | 291 | # append to csv file 292 | tee -a "${CSV_SERIAL_SETS_FILE}" < "${OUTPUT_ENV_FILE}" 310 | export DEVICE_MODEL="${DEVICE_MODEL}" 311 | export SERIAL="${SERIAL}" 312 | export BOARD_SERIAL="${BOARD_SERIAL}" 313 | export UUID="${UUID}" 314 | export MAC_ADDRESS="${MAC_ADDRESS}" 315 | export WIDTH="${WIDTH}" 316 | export HEIGHT="${HEIGHT}" 317 | EOF 318 | 319 | fi 320 | 321 | # plist required for bootdisks, so create anyway. 322 | if [ "${CREATE_PLISTS}" ] || [ "${CREATE_BOOTDISKS}" ]; then 323 | 324 | # need a config.plist 325 | if [ "${MASTER_PLIST}" ]; then 326 | [ -e "${MASTER_PLIST}" ] || echo "Could not find: ${MASTER_PLIST}" 327 | elif [ "${MASTER_PLIST}" ] && [ "${MASTER_PLIST_URL}" ]; then 328 | echo 'You specified both a custom plist FILE & custom plist URL.' 329 | echo 'Use only one of those options.' 330 | elif [ "${MASTER_PLIST_URL}" ]; then 331 | curl -L -o "${MASTER_PLIST:=./config-custom.plist}" "${MASTER_PLIST_URL}" 332 | else 333 | # default is config-nopicker-custom.plist from OSX-KVM with placeholders used in Docker-OSX 334 | curl -L -o "${MASTER_PLIST:=./config-nopicker-custom.plist}" "${MASTER_PLIST_URL}" 335 | fi 336 | 337 | mkdir -p "${OUTPUT_DIRECTORY}/plists" 338 | source "${OUTPUT_ENV_FILE}" 339 | ROM="${MAC_ADDRESS//\:/}" 340 | ROM="$(awk '{print tolower($0)}' <<< "${ROM}")" 341 | sed -e s/\{\{DEVICE_MODEL\}\}/"${DEVICE_MODEL}"/g \ 342 | -e s/\{\{SERIAL\}\}/"${SERIAL}"/g \ 343 | -e s/\{\{BOARD_SERIAL\}\}/"${BOARD_SERIAL}"/g \ 344 | -e s/\{\{UUID\}\}/"${UUID}"/g \ 345 | -e s/\{\{ROM\}\}/"${ROM}"/g \ 346 | -e s/\{\{WIDTH\}\}/"${WIDTH}"/g \ 347 | -e s/\{\{HEIGHT\}\}/"${HEIGHT}"/g \ 348 | -e s/\{\{KERNEL_ARGS\}\}/"${KERNEL_ARGS:-}"/g \ 349 | "${MASTER_PLIST}" > "${OUTPUT_DIRECTORY}/plists/${SERIAL}.config.plist" || exit 1 350 | fi 351 | 352 | # make bootdisk qcow2 format if --bootdisks, but also if you set the bootdisk filename 353 | if [ "${CREATE_BOOTDISKS}" ] || [ "${OUTPUT_BOOTDISK}" ]; then 354 | [ -e ./opencore-image-ng.sh ] \ 355 | || { curl -L -O "${OPENCORE_IMAGE_MAKER_URL}" \ 356 | && chmod +x opencore-image-ng.sh ; } 357 | mkdir -p "${OUTPUT_DIRECTORY}/bootdisks" 358 | ./opencore-image-ng.sh \ 359 | --cfg "${OUTPUT_DIRECTORY}/plists/${SERIAL}.config.plist" \ 360 | --img "${OUTPUT_BOOTDISK:-${OUTPUT_DIRECTORY}/bootdisks/${SERIAL}.OpenCore-nopicker.qcow2}" || exit 1 361 | fi 362 | 363 | done 364 | 365 | [ -e "${CSV_SERIAL_SETS_FILE}" ] && \ 366 | cat <(echo "DEVICE_MODEL,SERIAL,BOARD_SERIAL,UUID,MAC_ADDRESS,WIDTH,HEIGHT,KERNEL_ARGS") "${CSV_SERIAL_SETS_FILE}" 367 | 368 | 369 | [ -e "${TSV_SERIAL_SETS_FILE}" ] && \ 370 | cat <(printf "DEVICE_MODEL\tSERIAL\tBOARD_SERIAL\tUUID\tMAC_ADDRESS\tWIDTH\tHEIGHT\tKERNEL_ARGS\n") "${TSV_SERIAL_SETS_FILE}" 371 | 372 | } 373 | 374 | main () { 375 | # setting default variables if there are no options 376 | export DATE_NOW="$(date +%F-%T)" 377 | export DEVICE_MODEL="${DEVICE_MODEL:=iMacPro1,1}" 378 | export VENDOR_REGEX="${VENDOR_REGEX:=Apple, Inc.}" 379 | export SERIAL_SET_COUNT="${SERIAL_SET_COUNT:=1}" 380 | export OUTPUT_DIRECTORY="${OUTPUT_DIRECTORY:=.}" 381 | cat </dev/null 2>&1 || true 30 | fi 31 | sudo rm -rf "$WORK" 32 | } 33 | 34 | WORK="${ROOT_DIR}" 35 | trap 'do_cleanup' EXIT 36 | 37 | BASE="${PWD}" 38 | 39 | ###################################################################### 40 | # parse args 41 | 42 | function print_help() { 43 | cat < 47 | --cfg, --config, -c 48 | EOF 49 | } 50 | 51 | # gather arguments 52 | while (( "$#" )); do 53 | case "${1}" in 54 | 55 | --help | -h | h | help ) 56 | print_help && exit 0 57 | ;; 58 | 59 | --img=* | --image=* ) 60 | export IMAGE="${1#*=}" 61 | shift 62 | ;; 63 | 64 | --img* | --image*) 65 | export IMAGE="${2}" 66 | shift 67 | shift 68 | ;; 69 | 70 | --cfg=* | --config=* | -c=* ) 71 | export CONFIG="${1#*=}" 72 | shift 73 | ;; 74 | 75 | --cfg* | --config* | -c* ) 76 | export CONFIG="${2}" 77 | shift 78 | shift 79 | ;; 80 | *) 81 | echo "Invalid option: ${1}" 82 | exit 1 83 | ;; 84 | esac 85 | done 86 | 87 | 88 | ###################################################################### 89 | # guestfish script helpers 90 | 91 | fish() { 92 | echo "#" "$@" 93 | guestfish --remote -- "$@" || exit 1 94 | } 95 | 96 | fish_init() { 97 | # local format 98 | 99 | case "$(file --brief "${IMAGE}")" in 100 | QEMU\ QCOW2\ Image* ) export FORMAT=qcow2 101 | ;; 102 | DOS\/MBR* ) export FORMAT=raw 103 | ;; 104 | * ) export FORMAT= 105 | echo "IMAGE file: ${IMAGE} is neither qcow2 nor raw." 106 | ;; 107 | esac 108 | 109 | echo_bold "Creating and adding disk image..." 110 | fish disk-create "${IMAGE}" "${FORMAT}" 384M 111 | fish add "${IMAGE}" 112 | fish run 113 | } 114 | 115 | 116 | # disabled by @sickcodes to allow unattended image overwrites 117 | ###################################################################### 118 | # sanity checks 119 | 120 | # if test ! -f "${CONFIG}"; then 121 | # echo "ERROR: cfg not found: ${CONFIG}"" 122 | # exit 1 123 | # fi 124 | # if test -f "${IMAGE}"; then 125 | # if test "$allow_override" = "yes"; then 126 | # rm -f "${IMAGE}" 127 | # else 128 | # echo "ERROR: image exists: ${IMAGE} 129 | # exit 1 130 | # fi 131 | # fi 132 | 133 | ###################################################################### 134 | # go! 135 | 136 | echo "Copying files from local folder..." 137 | # BASE="$(dirname $0)" 138 | cp -a "${BASE}/EFI" "${WORK}" 139 | # find "${WORK}" 140 | 141 | #echo_bold "[debug] list drivers in EFI/OC" 142 | #(cd $WORK/EFI/OC; find driver* -print) 143 | 144 | 145 | export LIBGUESTFS_BACKEND=direct 146 | unset GUESTFISH_PID 147 | source <(guestfish --listen || exit 1) 148 | 149 | if [[ -z "${GUESTFISH_PID}" ]]; then 150 | echo "ERROR: starting guestfish failed. Install libguestfs-tools" 151 | exit 1 152 | fi 153 | 154 | fish_init 155 | 156 | echo_bold "Partitioning disk image" 157 | fish part-init /dev/sda gpt 158 | fish part-add /dev/sda p 2048 300000 159 | fish part-add /dev/sda p 302048 -2048 160 | # fish part-set-gpt-type /dev/sda 1 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 161 | fish part-set-gpt-type /dev/sda 1 "$(uuidgen)" 162 | fish part-set-bootable /dev/sda 1 true 163 | fish mkfs vfat /dev/sda1 label:EFI 164 | fish mkfs vfat /dev/sda2 label:OpenCore 165 | fish mount /dev/sda2 / 166 | fish mkdir /ESP 167 | fish mount /dev/sda1 /ESP 168 | 169 | echo_bold "copy files to disk image" 170 | cp -v "${CONFIG}" "${WORK}/config.plist" 171 | fish mkdir /ESP/EFI 172 | fish mkdir /ESP/EFI/OC 173 | fish mkdir /ESP/EFI/OC/Kexts 174 | fish mkdir /ESP/EFI/OC/ACPI 175 | fish mkdir /ESP/EFI/OC/Resources 176 | fish mkdir /ESP/EFI/OC/Tools 177 | fish copy-in "${WORK}/EFI/BOOT" /ESP/EFI 178 | fish copy-in "${WORK}/EFI/OC/OpenCore.efi" /ESP/EFI/OC 179 | fish copy-in "${WORK}/EFI/OC/Drivers" /ESP/EFI/OC/ 180 | fish copy-in "${WORK}/EFI/OC/Kexts" /ESP/EFI/OC/ 181 | fish copy-in "${WORK}/EFI/OC/ACPI" /ESP/EFI/OC/ 182 | fish copy-in "${WORK}/EFI/OC/Resources" /ESP/EFI/OC/ 183 | fish copy-in "${WORK}/EFI/OC/Tools" /ESP/EFI/OC/ 184 | 185 | # Note 186 | fish copy-in startup.nsh / 187 | 188 | BASE="$(dirname "$0")" 189 | fish copy-in "${WORK}/config.plist" /ESP/EFI/OC/ 190 | 191 | fish find /ESP 192 | 193 | fish umount-all 194 | -------------------------------------------------------------------------------- /opencore-image-ng.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # https://github.com/kraxel/imagefish 4 | 5 | ###################################################################### 6 | # defaults 7 | 8 | iso="" 9 | img="" 10 | cfg="" 11 | 12 | ###################################################################### 13 | # create work dir 14 | 15 | function msg() { 16 | local txt="$1" 17 | local bold="\x1b[1m" 18 | local normal="\x1b[0m" 19 | echo -e "${bold}### ${txt}${normal}" 20 | } 21 | 22 | function do_cleanup() { 23 | msg "cleaning up ..." 24 | if test "$GUESTFISH_PID" != ""; then 25 | guestfish --remote -- exit >/dev/null 2>&1 || true 26 | fi 27 | sudo rm -rf "$WORK" 28 | } 29 | 30 | WORK="${TMPDIR-/var/tmp}/${0##*/}-$$" 31 | mkdir "$WORK" || exit 1 32 | trap 'do_cleanup' EXIT 33 | 34 | BASE="$(dirname $0)" 35 | 36 | ###################################################################### 37 | # parse args 38 | 39 | function print_help() { 40 | cat < 44 | --img 45 | --cfg 46 | EOF 47 | } 48 | 49 | while test "$1" != ""; do 50 | case "$1" in 51 | --iso) 52 | iso="$2" 53 | shift; shift 54 | ;; 55 | --img) 56 | img="$2" 57 | shift; shift 58 | ;; 59 | --cfg) 60 | cfg="$2" 61 | shift; shift 62 | ;; 63 | esac 64 | done 65 | 66 | ###################################################################### 67 | # guestfish script helpers 68 | 69 | function fish() { 70 | echo "#" "$@" 71 | guestfish --remote -- "$@" || exit 1 72 | } 73 | 74 | function fish_init() { 75 | local format 76 | 77 | case "$img" in 78 | *.raw) format="raw" ;; 79 | *) format="qcow2";; 80 | esac 81 | 82 | msg "creating and adding disk image" 83 | fish disk-create $img $format 384M 84 | fish add $img 85 | fish run 86 | } 87 | 88 | function fish_fini() { 89 | fish umount-all 90 | } 91 | 92 | # disabled by @sickcodes to allow unattended image overwrites 93 | ###################################################################### 94 | # sanity checks 95 | 96 | # if test ! -f "$cfg"; then 97 | # echo "ERROR: cfg not found: $cfg" 98 | # exit 1 99 | # fi 100 | # if test -f "$img"; then 101 | # if test "$allow_override" = "yes"; then 102 | # rm -f "$img" 103 | # else 104 | # echo "ERROR: image exists: $img" 105 | # exit 1 106 | # fi 107 | # fi 108 | 109 | ###################################################################### 110 | # go! 111 | 112 | msg "copy files from local folder" 113 | BASE="$(dirname $0)" 114 | cp -a $BASE/EFI $WORK 115 | find "$WORK" 116 | 117 | #msg "[debug] list drivers in EFI/OC" 118 | #(cd $WORK/EFI/OC; find driver* -print) 119 | 120 | export LIBGUESTFS_BACKEND=direct 121 | eval $(guestfish --listen) 122 | if test "$GUESTFISH_PID" = ""; then 123 | echo "ERROR: starting guestfish failed" 124 | exit 1 125 | fi 126 | 127 | fish_init 128 | 129 | msg "partition disk image" 130 | fish part-init /dev/sda gpt 131 | fish part-add /dev/sda p 2048 300000 132 | fish part-add /dev/sda p 302048 -2048 133 | fish part-set-gpt-type /dev/sda 1 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 134 | fish part-set-bootable /dev/sda 1 true 135 | fish mkfs vfat /dev/sda1 label:EFI 136 | fish mkfs vfat /dev/sda2 label:OpenCore 137 | fish mount /dev/sda2 / 138 | fish mkdir /ESP 139 | fish mount /dev/sda1 /ESP 140 | 141 | msg "copy files to disk image" 142 | cp -v "$cfg" $WORK/config.plist 143 | fish mkdir /ESP/EFI 144 | fish mkdir /ESP/EFI/OC 145 | fish mkdir /ESP/EFI/OC/Kexts 146 | fish mkdir /ESP/EFI/OC/ACPI 147 | fish mkdir /ESP/EFI/OC/Resources 148 | fish mkdir /ESP/EFI/OC/Tools 149 | fish copy-in $WORK/EFI/BOOT /ESP/EFI 150 | fish copy-in $WORK/EFI/OC/OpenCore.efi /ESP/EFI/OC 151 | fish copy-in $WORK/EFI/OC/Drivers /ESP/EFI/OC/ 152 | fish copy-in $WORK/EFI/OC/Kexts /ESP/EFI/OC/ 153 | fish copy-in $WORK/EFI/OC/ACPI /ESP/EFI/OC/ 154 | fish copy-in $BASE/resources/OcBinaryData/Resources /ESP/EFI/OC/ 155 | fish copy-in $WORK/EFI/OC/Tools /ESP/EFI/OC/ 156 | 157 | # Note 158 | fish copy-in startup.nsh / 159 | 160 | BASE="$(dirname $0)" 161 | fish copy-in "$WORK/config.plist" /ESP/EFI/OC/ 162 | 163 | fish find /ESP/ 164 | fish_fini 165 | -------------------------------------------------------------------------------- /running-mac-inside-docker-qemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sickcodes/osx-serial-generator/908b3d687a200ca6691750fac967670d76f2a17b/running-mac-inside-docker-qemu.png --------------------------------------------------------------------------------