Re: Problem with init call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Wan ZongShun wrote:
> Can you find this console file in rootfs/dev/? Sure the UART driver
> works well?

My kernel param is:
console=ttyS1,115200

devel:~# ll /boardnfs/root/dev/ttyS1
crw-rw---- 1 root dialout 4, 65 2009-02-20 11:10 /boardnfs/root/dev/ttyS1

I think the UART driver is working properly, because if I use the "old" (orig) rootfilesystem to boot up with the new kernel, it works...

In my new rootfilesystem there is only /sbin/init (Hello world) and /dev/ttyS1 and the directory structure, should I use anything else to boot up the hello world init??



>  
> There are a lot of reasons for this Warning!
> 2009/3/17 Zachár Balázs <bzachar@xxxxxxxxxxxxxx
> <mailto:bzachar@xxxxxxxxxxxxxx>>
> 
>     Hi,
> 
>     I have a pxa270 based board, and I would like to renew the system on
>     it...
> 
>     I am using the emdebian's stable gnueabi cross-toolchain.
>     I have already recompile the kernel (both latest stable (2.6.28.7)
>     and testing (2.6.29-rc8)) and it works (boot up) now...
>     I make a single init code:
>     devel:/opt/rootfs# cat test_init.c
>     #include <stdio.h>
> 
>     int main()
>     {
>      printf("Hello world!\n");
>      while(1);
>      return 0;
>     }
> 
>     I compiled it with the toolchain to static and move it to the
>     ${nfsserver}/root/sbin/init place
> 
>     But when I got this error message when I trying to boot:
> 
>     Looking up port of RPC 100003/2 on 10.10.10.1
>     Looking up port of RPC 100005/1 on 10.10.10.1
>     VFS: Mounted root (nfs filesystem) on device 0:11.
>     Freeing init memory: 96K
>     Warning: unable to open an initial console.
>     Kernel panic - not syncing: Attempted to kill init!
> 
> 
>     (I have console= in the kernel params so I ignore the warning
>     message...)
>     I put some printk to the arch/arm/kernel/sys_arm.c's kernel_execve
>     function to see where is the problem:
>     int kernel_execve(const char *filename, char *const argv[], char
>     *const envp[])
>     {
>            struct pt_regs regs;
>            int ret;
> 
>            printk("Before memset.\n");
>            memset(&regs, 0, sizeof(struct pt_regs));
>            printk("After memset, before do_execve.\n");
>            ret = do_execve((char *)filename, (char __user * __user *)argv,
>                            (char __user * __user *)envp, &regs);
>            printk("After do_execve, return value: %d\n",ret);
>            if (ret < 0)
>                    goto out;
>            /*
>             * Save argc to the register structure for userspace.
>             */
>            regs.ARM_r0 = ret;
> 
>            /*
>             * We were successful.  We won't be returning to our caller, but
>             * instead to user space by manipulating the kernel stack.
>             */
>            printk("Before asm code.\n");
>            asm(<-->"add<-->r0, %0, %1\n\t"
>                    "mov<-->r1, %2\n\t"
>                    "mov<-->r2, %3\n\t"
>                    "bl<--->memmove\n\t"<-->/* copy regs to top of stack */
>                    "mov<-->r8, #0\n\t"<--->/* not a syscall */
>                    "mov<-->r9, %0\n\t"<--->/* thread structure */
>                    "mov<-->sp, r0\n\t"<--->/* reposition stack pointer */
>                    "b<---->ret_to_user"
>                    :
>                    : "r" (current_thread_info()),
>                      "Ir" (THREAD_START_SP - sizeof(regs)),
>                      "r" (&regs),
>                      "Ir" (sizeof(regs))
>                    : "r0", "r1", "r2", "r3", "ip", "lr", "memory");
>            printk("After asm code.\n");
>      out:
>            return ret;
>     }
> 
> 
>     And I got this output at boot:
>     Freeing init memory: 96K
>     Warning: unable to open an initial console.
>     Before memset.
>     After memset, before do_execve.
>     After do_execve, return value: 0
>     Before asm code.
>     Kernel panic - not syncing: Attempted to kill init!
> 
> 
> 
>     It looks like when it use the asm code, it crash (no "After asm
>     code." message)...
> 
>     Any Idea what am I doing wrong?
> 
>     regards,
>     Balázs Zachár
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>     -------------------------------------------------------------------
>     List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
>     FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
>     Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php
> 
> 
> 
> 
> -- 
> embedded forum
> http://mcuos.com

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php


[Linux ARM]     [Linux ARM MSM]     [Linux ARM Kernel]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

Add to Google Follow linuxarm on Twitter