Jump to content

Mavericks kernel testing on AMD (formerly Mountain Lion kernel testing on AMD)


theconnactic
 Share

6,414 posts in this topic

Recommended Posts

You don't need -enable_ssse3emu.

 

 

 

I'll try it just to be sure, but since ML is 64-bit only and i'm running on a 64-bit CPU, isn't arch=x86_64 turned on by default?

It has support for building a 32bit kernel...

Even though the necessary kexts are not present X-(

I'm currently building a 10.8.0 kernel...

Hopefully that one works..

Post in a minute...

 

Andy, if you have time, can you make a version of your kernel for 10.7.5?

I'll get on it in a minute...

Allready compiling for 10.8.0...

I could do it ;)

  • Like 1
Link to comment
Share on other sites

10.8.0 kernel is here...

Lion kernel is still building... ;)

Patch also here...

 

Ahnnn... maybe that's one more factor to add to the recipe: my HD has 10.8.2. I think i should somehow revert to 10.8.0 before testing your upcoming kernel, unless you post the diff for me to build it myself?

Diff is above ;)

 

Ahnnn... maybe that's one more factor to add to the recipe: my HD has 10.8.2. I think i should somehow revert to 10.8.0 before testing your upcoming kernel, unless you post the diff for me to build it myself?

Diff is above ;)

 

Lion kernel is currently building... will post to the Lion section as soon as it's done ;) (including diff)

AnV_kernel.zip

xnu-2050.7.9-test1.diff.zip

Link to comment
Share on other sites

10.8.0 kernel is here...

Lion kernel is still building... ;)

Patch also here...

 

 

Diff is above ;)

 

 

Diff is above ;)

 

Lion kernel is currently building... will post to the Lion section as soon as it's done ;) (including diff)

 

10.8.0 kernel, patched dyld -> launchd panics.

Link to comment
Share on other sites

10.8.0 kernel, patched dyld -> launchd panics.

:o

And with stock dyld?

This is very strange...

NOTE: It's the 10.8.2 dyld... maybe a bit different than 10.8.0 one... you can test with stock dyld and dyld patched by amd_insn_patcher above...

Link to comment
Share on other sites

:o

And with stock dyld?

This is very strange...

NOTE: It's the 10.8.2 dyld... maybe a bit different than 10.8.0 one... you can test with stock dyld and dyld patched by amd_insn_patcher above...

 

Yea, your 10.8.2 dyld. With stock 10.8.2 it got stuck @ Kernel is LP64.

If someone can upload 10.8.0 dyld, I will patch it and try with the 10.8.0 kernel. :)

 

I don't have a 10.8.0 system, I just tried to boot my 10.8.2 with your 10.8.0 kernel, which resulted in the same panic as with your 10.8.2 kernel. :D

 

 

EDIT:

 

 

1. 10.8.2 - AnV 10.8.2 Kernel - stock dyld & launchd

Kernel is LP64

 

2. 10.8.2 - AnV 10.8.2 Kernel - AnV patched dyld - stock launchd

Launchd errno13, gets past Kernel is LP64

 

3. 10.8.2 - AnV 10.8.0 Kernel - AnV patched dyld - stock launchd

Launchd errno13, gets past Kernel is LP64

 

4. 10.8.2 - AnV 10.8.2 Kernel - Self patched dyld - stock launchd

Launchd errno13, gets past Kernel is LP64

 

5. 10.8.2 - AnV 10.8.2 Kernel - Self patched dyld & libSystem.B.dylib - stock launchd

Launchd errno13, gets past Kernel is LP64

 

 

All tests on Phenom II x4 965. I can boot Sinetek's 10.6.8 64-bit kernel.

Link to comment
Share on other sites

Man... damn launchd... if only we knew what a "errno13" is referring too...

Link to comment
Share on other sites

Man... damn launchd... if only we knew what a "errno13" is referring too...

 

You know what... We DO know :)

Browse to something like page 15 - 30 and you should find the answer, I found it when I was researching information about ML DP1 (which is i386 too) :D

It was something "invalid cpu" something... can't remember and I'm too busy to search it :D

 

EDIT: My bad, it was errno 85. But we can maybe find it the sameway I found 85?

 

EDIT2:

Found it.

 

What does this mean? ;) I included the whole errno.h in the spoiler. Permission denied?

 

 

/*
* Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. The rights granted to you under the License
* may not be used to create, or enable the creation or redistribution of,
* unlawful or unlicensed copies of an Apple operating system, or to
* circumvent, violate, or enable the circumvention or violation of, any
* terms of an Apple operating system software license agreement.
*
* Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
/*
* Copyright (c) 1982, 1986, 1989, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)errno.h 8.5 (Berkeley) 1/21/94
*/
#ifndef _SYS_ERRNO_H_
#define _SYS_ERRNO_H_
#include <sys/cdefs.h>
#if !defined(KERNEL) && !defined(KERNEL_PRIVATE)
__BEGIN_DECLS
extern int * __error(void);
#define errno (*__error())
__END_DECLS
#endif
/*
* Error codes
*/
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* Input/output error */
#define ENXIO 6 /* Device not configured */
#define E2BIG 7 /* Argument list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file descriptor */
#define ECHILD 10 /* No child processes */
#define EDEADLK 11 /* Resource deadlock avoided */
 /* 11 was EAGAIN */
#define ENOMEM 12 /* Cannot allocate memory */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define ENOTBLK 15 /* Block device required */
#endif
#define EBUSY 16 /* Device / Resource busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Cross-device link */
#define ENODEV 19 /* Operation not supported by device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* Too many open files in system */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Inappropriate ioctl for device */
#define ETXTBSY 26 /* Text file busy */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
/* math software */
#define EDOM 33 /* Numerical argument out of domain */
#define ERANGE 34 /* Result too large */
/* non-blocking and interrupt i/o */
#define EAGAIN 35 /* Resource temporarily unavailable */
#define EWOULDBLOCK EAGAIN /* Operation would block */
#define EINPROGRESS 36 /* Operation now in progress */
#define EALREADY 37 /* Operation already in progress */
/* ipc/network software -- argument errors */
#define ENOTSOCK 38 /* Socket operation on non-socket */
#define EDESTADDRREQ 39 /* Destination address required */
#define EMSGSIZE 40 /* Message too long */
#define EPROTOTYPE 41 /* Protocol wrong type for socket */
#define ENOPROTOOPT 42 /* Protocol not available */
#define EPROTONOSUPPORT 43 /* Protocol not supported */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
#endif
#define ENOTSUP 45 /* Operation not supported */
#if !__DARWIN_UNIX03 && !defined(KERNEL)
/*
* This is the same for binary and source copmpatability, unless compiling
* the kernel itself, or compiling __DARWIN_UNIX03; if compiling for the
* kernel, the correct value will be returned. If compiling non-POSIX
* source, the kernel return value will be converted by a stub in libc, and
* if compiling source with __DARWIN_UNIX03, the conversion in libc is not
* done, and the caller gets the expected (discrete) value.
*/
#define EOPNOTSUPP ENOTSUP /* Operation not supported on socket */
#endif /* !__DARWIN_UNIX03 && !KERNEL */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EPFNOSUPPORT 46 /* Protocol family not supported */
#endif
#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
#define EADDRINUSE 48 /* Address already in use */
#define EADDRNOTAVAIL 49 /* Can't assign requested address */
/* ipc/network software -- operational errors */
#define ENETDOWN 50 /* Network is down */
#define ENETUNREACH 51 /* Network is unreachable */
#define ENETRESET 52 /* Network dropped connection on reset */
#define ECONNABORTED 53 /* Software caused connection abort */
#define ECONNRESET 54 /* Connection reset by peer */
#define ENOBUFS 55 /* No buffer space available */
#define EISCONN 56 /* Socket is already connected */
#define ENOTCONN 57 /* Socket is not connected */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define ESHUTDOWN 58 /* Can't send after socket shutdown */
#define ETOOMANYREFS 59 /* Too many references: can't splice */
#endif
#define ETIMEDOUT 60 /* Operation timed out */
#define ECONNREFUSED 61 /* Connection refused */
#define ELOOP 62 /* Too many levels of symbolic links */
#define ENAMETOOLONG 63 /* File name too long */
/* should be rearranged */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EHOSTDOWN 64 /* Host is down */
#endif
#define EHOSTUNREACH 65 /* No route to host */
#define ENOTEMPTY 66 /* Directory not empty */
/* quotas & mush */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EPROCLIM 67 /* Too many processes */
#define EUSERS 68 /* Too many users */
#endif
#define EDQUOT 69 /* Disc quota exceeded */
/* Network File System */
#define ESTALE 70 /* Stale NFS file handle */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EREMOTE 71 /* Too many levels of remote in path */
#define EBADRPC 72 /* RPC struct is bad */
#define ERPCMISMATCH 73 /* RPC version wrong */
#define EPROGUNAVAIL 74 /* RPC prog. not avail */
#define EPROGMISMATCH 75 /* Program version wrong */
#define EPROCUNAVAIL 76 /* Bad procedure for program */
#endif
#define ENOLCK 77 /* No locks available */
#define ENOSYS 78 /* Function not implemented */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EFTYPE 79 /* Inappropriate file type or format */
#define EAUTH 80 /* Authentication error */
#define ENEEDAUTH 81 /* Need authenticator */
/* Intelligent device errors */
#define EPWROFF 82 /* Device power is off */
#define EDEVERR 83 /* Device error, e.g. paper out */
#endif
#define EOVERFLOW 84 /* Value too large to be stored in data type */
/* Program loading errors */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define EBADEXEC 85 /* Bad executable */
#define EBADARCH 86 /* Bad CPU type in executable */
#define ESHLIBVERS 87 /* Shared library version mismatch */
#define EBADMACHO 88 /* Malformed Macho file */
#endif
#define ECANCELED 89 /* Operation canceled */
#define EIDRM 90 /* Identifier removed */
#define ENOMSG 91 /* No message of desired type */
#define EILSEQ 92 /* Illegal byte sequence */
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define ENOATTR 93 /* Attribute not found */
#endif
#define EBADMSG 94 /* Bad message */
#define EMULTIHOP 95 /* Reserved */
#define ENODATA 96 /* No message available on STREAM */
#define ENOLINK 97 /* Reserved */
#define ENOSR 98 /* No STREAM resources */
#define ENOSTR 99 /* Not a STREAM */
#define EPROTO 100 /* Protocol error */
#define ETIME 101 /* STREAM ioctl timeout */
#if __DARWIN_UNIX03 || defined(KERNEL)
/* This value is only discrete when compiling __DARWIN_UNIX03, or KERNEL */
#define EOPNOTSUPP 102 /* Operation not supported on socket */
#endif /* __DARWIN_UNIX03 || KERNEL */
#define ENOPOLICY 103 /* No such policy registered */
#if __DARWIN_C_LEVEL >= 200809L
#define ENOTRECOVERABLE 104 /* State not recoverable */
#define EOWNERDEAD	 105 /* Previous owner died */
#endif
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#define ELAST 105 /* Must be equal largest errno */
#endif
#ifdef KERNEL
/* pseudo-errors returned inside kernel to modify return to process */
#define ERESTART (-1) /* restart syscall */
#define EJUSTRETURN (-2) /* don't modify regs, just return */
#ifdef BSD_KERNEL_PRIVATE
#define ERECYCLE (-5) /* restart lookup under heavy vnode pressure/recycling */
#define EREDRIVEOPEN (-6)
#define EKEEPLOOKING (-7)
/* used for cvwait error returns to Libc */
#define ECVCERORR 256
#define ECVPERORR 512
#else /* BSD_KERNEL_PRIVATE */
/* -5 and -6 are reserved for kernel internal use */
#endif /* BSD_KERNEL_PRIVATE */
#endif
#endif /* _SYS_ERRNO_H_ */

 

 

 

 

EDIT 3:

This is the part that causes the panic. /bsd/kern/kern_exec.c, lines 3547 - 3551.

 

 

 

 

static char  init_program_name[128] = "/sbin/launchd";
struct execve_args init_exec_args;
/*
* load_init_program
*
* Description: Load the "init" program; in most cases, this will be "launchd"
*
* Parameters: p   Process to call execve() to create
*	 the "init" program
*
* Returns: (void)
*

* Notes: The process that is passed in is the first manufactured
*  process on the system, and gets here via bsd_ast() firing
*  for the first time.  This is done to ensure that bsd_init()
*  has run to completion.
*/
void
load_init_program(proc_t p)
{
vm_offset_t init_addr;
int  argc = 0;
uint32_t argv[3];
int   error;
int   retval[2];
/*
 * Copy out program name.
 */
init_addr = VM_MIN_ADDRESS;
(void) vm_allocate(current_map(), &init_addr, PAGE_SIZE,
   VM_FLAGS_ANYWHERE);
if (init_addr == 0)
 init_addr++;
(void) copyout((caddr_t) init_program_name, CAST_USER_ADDR_T(init_addr),
  (unsigned) sizeof(init_program_name)+1);
argv[argc++] = (uint32_t)init_addr;
init_addr += sizeof(init_program_name);
init_addr = (vm_offset_t)ROUND_PTR(char, init_addr);
/*
 * Put out first (and only) argument, similarly.
 * Assumes everything fits in a page as allocated
 * above.
 */
if (boothowto & RB_SINGLE) {
 const char *init_args = "-s";
 copyout(init_args, CAST_USER_ADDR_T(init_addr),
  strlen(init_args));
 argv[argc++] = (uint32_t)init_addr;
 init_addr += strlen(init_args);
 init_addr = (vm_offset_t)ROUND_PTR(char, init_addr);
}
/*
 * Null-end the argument list
 */
argv[argc] = 0;

/*
 * Copy out the argument list.
 */

(void) copyout((caddr_t) argv, CAST_USER_ADDR_T(init_addr),
  (unsigned) sizeof(argv));
/*
 * Set up argument block for fake call to execve.
 */
init_exec_args.fname = CAST_USER_ADDR_T(argv[0]);
init_exec_args.argp = CAST_USER_ADDR_T((char **)init_addr);
init_exec_args.envp = CAST_USER_ADDR_T(0);

/*
 * So that mach_init task is set with uid,gid 0 token
 */
set_security_token(p);
if (KERN_patcherOpts & OPT_PATCHER_DEBUG)
 dump_patcher_opts();
error = execve(p,&init_exec_args,retval);
if (error)
 panic("Process 1 exec of %s failed, errno %d",
    init_program_name, error);
}

 

 

Link to comment
Share on other sites

EACCESS = 13 = Permission denied X-)

Somewhere it blocks launchd...

I'll need to check... I have a vague idea what it might be...Need to investigate though...

 

EACCESS = 13 = Permission denied X-)

Somewhere it blocks launchd...

I'll need to check... I have a vague idea what it might be...Need to investigate though...

  • Like 1
Link to comment
Share on other sites

Probably just this damn android webkit based browser X-)

I get that sometimes...

Link to comment
Share on other sites

I remade the kernel...

It no longer panics on launchd... (but does print if exec fails)

I also always put CS_VALID in the launch of Mach-O files...

It also doesn't check exec permissions...

You can disable launchd with -nolaunchd boot argument...

EDIT: -nolaunchd no luck Kernel is LP64... even on Intel...

Gonna test myself too...

The new mods are in the patch in kern_exec.c (and can be applied to Lion too)

test_kernel.zip

xnu-2050.18.24-test9.diff.zip

  • Like 1
Link to comment
Share on other sites

I remade the kernel...

It no longer panics on launchd... (but does print if exec fails)

I also always put CS_VALID in the launch of Mach-O files...

It also doesn't check exec permissions...

You can disable launchd with -nolaunchd boot argument...

Gonna test myself too...

The new mods are in the patch in kern_exec.c (and can be applied to Lion too)

 

Looking pretty damn good! :)

exec_check_permissions... xD

Link to comment
Share on other sites

Needs more work... X-(

 

Building another... I hope this one works...

Link to comment
Share on other sites

No even on intel it couldn't exec launchd...

I think I fixed it...

I've removed the error checks from check function.

Think it will fire now...

 

Kernel installed... testing...

Link to comment
Share on other sites

No even on intel it couldn't exec launchd...

I think I fixed it...

I've removed the error checks from check function.

Think it will fire now...

 

 

:) Sounds good. Btw, could this work:

 

 

 

static int
exec_check_permissions(struct image_params *imgp)
{
return false; //Would this work?
struct vnode *vp = imgp->ip_vp;

 

I mean that return false. Then it wouldn't return error or anything else?

Link to comment
Share on other sites

in this moment i repair my Mountain Lion HDD with DiskWarrior, i think in ten minutes i can test it

Link to comment
Share on other sites

This one succeeds...

Upload in a minute

Link to comment
Share on other sites

Raping my F5 already... ;)

Here it is...

It works fine with my Intel... please test on AMD.

Last BOTD (Build of the day lol)

Just tested the codesig work... stripped the codesig from the bash binary and put it in testsh...

It worked... Lets hope it does the same for dyld...

AnV_kernel.zip

xnu-2050.18.24-test10.diff.zip

Link to comment
Share on other sites

Here it is...

It works fine with my Intel... please test on AMD.

Last BOTD (Build of the day lol)

Just tested the codesig work... stripped the codesig from the bash binary and put it in testsh...

It worked... Lets hope it does the same for dyld...

 

I have wrong IOPCIFamily.kext and some other things too, so it just gave backtrace IOUSBFamily & IOPCIFamily.

But it got past Kernel is LP64 I think! :)

I'm trying to find the right kexts so I can see if it passes launchd! :)

Link to comment
Share on other sites

 Share

×
×
  • Create New...