Why You Need a Proper Init Process on Docker

You have to use proper init process when you create a docker image. Running a process on docker without it might lead unexpected results. Today, I’ll explain about that. The “init” Process and Orphans On a Linux system, the process which has PID 1 is the root of the process tree. It is called “init”. The default signal handlers of the init process is different from other ordinary processes. And the init process has a special responsibility.

Read more →

KJ Method to Get New Ideas

KJ method is a way to integrate classified and arranged information and encourage to conceive new ideas. This will be useful to make better solutions for difficult issues. Today I introduce the outline of that. 1. Explore and Record To begin with, collect and record information as much as possible from all the participants by any method such as brainstorming. Summarize each idea into short title and write it to a little paper (e.g. Post-it). As a rough standard, there may be several dozen to one hundred plus several dozen ideas during 2 hours session. To keep an essence or context of each idea, keep casual expression. In other word, a title should not be abstracted too much.

Read more →

Calling C Function from Assembly Code

I’m developing a tiny kernel to learn how software works from the bottom to up. That’s why I write assembly code. However, doing everything with that is very hard. So I’d like to use C or higher level programming language as far as possible. By the way, there are many calling conventions to call C function. Which convention can be used depends on CPU architecture and compiler. Today I tried two of them.

Read more →

Show Register Values of QEMU Emulator

To accomplish it, you can pass -monitor stdio option to qemu-system-TARGET. This option provides a monitor console for interacting with QEMU. And then info registers command prints the register values to stdout. $ qemu-system-x86_64 -monitor stdio -kernel kernel.elf (qemu) info registers EAX=cafebabe EBX=00009500 ECX=0010000c EDX=00000511 Also, it can be done with gdb. If -s option was passed, QEMU listen on port 1234 and wait for gdb connection. $ qemu-system-x86_64 -s -kernel kernel.elf & $ gdb (gdb) target remote localhost:1234 (gdb) info registers eax 0xcafebabe -889275714 ecx 0x10000c 1048588 edx 0x511 1297 ebx 0x9500 38144 Now you can make sure the value of EAX is 0xcafebabe.

Read more →

Gentaro "hibariya" Terada

Otakanomori, Nagareyama, Chiba, Japan
Email me

Likes Ruby, Internet, and Programming.