금요일, 11월 25, 2011

x86 kernel build chain - how bzImage gets created

x86 kernel build chain - how bzImage gets created
Source: http://lists.kernelnewbies.org/pipermail/kernelnewbies/2011-November/003906.html

Graeme Russ graeme.russ at gmail.com 
Tue Nov 22 05:46:31 EST 2011

Hi All,

Hopefully this will help demystify the build process

Notation:
 ()
  |
  + 
  |
  * 
  |
  \->  ()

The file sizes are arbitrary and are based on the current configuration
options I have set for a small kernel. They are simply there to illustrate
the relative differences in file sizes.

Note that vmlinux.o is not used to generate bzImage but I've included it
for completeness

+ arch/x86/kernel/head_32.o
+ arch/x86/kernel/head32.o
+ arch/x86/kernel/head.o
+ arch/x86/kernel/init_task.o
+ init/built-in.o
+ usr/built-in.o
+ arch/x86/built-in.o
+ kernel/built-in.o
+ mm/built-in.o
+ fs/built-in.o
+ ipc/built-in.o
+ security/built-in.o
+ crypto/built-in.o
+ block/built-in.o
+ lib/lib.a
+ arch/x86/lib/lib.a
+ lib/built-in.o
+ arch/x86/lib/built-in.o
+ drivers/built-in.o
+ sound/built-in.o
+ firmware/built-in.o
+ arch/x86/pci/built-in.o
+ net/built-in.o
|
* ld -m elf_i386 -r -o vmlinux.o
|
\->vmlinux.o (2,889,050)

+ arch/x86/kernel/head_32.o
+ arch/x86/kernel/head32.o
+ arch/x86/kernel/head.o
+ arch/x86/kernel/init_task.o
+ init/built-in.o
+ usr/built-in.o
+ arch/x86/built-in.o
+ kernel/built-in.o
+ mm/built-in.o
+ fs/built-in.o
+ ipc/built-in.o
+ security/built-in.o
+ crypto/built-in.o
+ block/built-in.o
+ lib/lib.a
+ arch/x86/lib/lib.a
+ lib/built-in.o
+ arch/x86/lib/built-in.o
+ drivers/built-in.o
+ sound/built-in.o
+ firmware/built-in.o
+ arch/x86/pci/built-in.o
+ net/built-in.o
+ .tmp_kallsyms2.o
|
* ld -m elf_i386 --build-id -T arch/x86/kernel/vmlinux.lds
|
\->vmlinux (2,629,659)
   |
   * objcopy -R .comment -S
   |
   \->arch/x86/boot/compressed/vmlinux.bin (2,094,132)
      |
      * gzip
      |
      \-> arch/x86/boot/compressed/vmlinux.bin.gz (1,074,711)
         |
         * .incbin
         |
         \-> piggy.S
            |
            * gcc
            |
            \-> piggy.o (1,075,419)
               |
               + arch/x86/boot/compressed/head_32.o
               + arch/x86/boot/compressed/misc.o
               + arch/x86/boot/compressed/string.o
               + arch/x86/boot/compressed/cmdline.o
               + arch/x86/boot/compressed/early_serial_console.o
               |
               * ld -m elf_i386 -T arch/x86/boot/compressed/vmlinux.lds
               |
               \->arch/x86/boot/compressed/vmlinux (1,099,538)
                  |
                  * objcopy -O binary -R .note -R .comment -S
                  |
                  \-> arch/x86/boot/vmlinux.bin (1,092,060)
                     |
                     |   + arch/x86/boot/a20.o
                     |   + arch/x86/boot/bioscall.o
                     |   + arch/x86/boot/cmdline.o
                     |   + arch/x86/boot/copy.o
                     |   + arch/x86/boot/cpu.o
                     |   + arch/x86/boot/cpucheck.o
                     |   + arch/x86/boot/early_serial_console.o
                     |   + arch/x86/boot/edd.o
                     |   + arch/x86/boot/header.o
                     |   + arch/x86/boot/main.o
                     |   + arch/x86/boot/mca.o
                     |   + arch/x86/boot/memory.o
                     |   + arch/x86/boot/pm.o
                     |   + arch/x86/boot/pmjump.o
                     |   + arch/x86/boot/printf.o
                     |   + arch/x86/boot/regs.o
                     |   + arch/x86/boot/string.o
                     |   + arch/x86/boot/tty.o
                     |   + arch/x86/boot/video.o
                     |   + arch/x86/boot/video-mode.o
                     |   + arch/x86/boot/version.o
                     |   + arch/x86/boot/video-vga.o
                     |   + arch/x86/boot/video-vesa.o
                     |   + arch/x86/boot/video-bios.o
                     |   |
                     |   * ld -m elf_i386 -T arch/x86/boot/setup.ld
                     |   |
                     |   \->arch/x86/boot/setup.elf (186,171)
                     |      |
                     |      * objcopy -O binary arch/x86/boot/setup.elf
                     |      |
                     +      \-> arch/x86/boot/setup.bin (12,604)
                     |
                     * arch/x86/boot/tools/build
                     |
                     \-> arch/x86/boot/bzImage (1,104,864)


-----
Cheers,
June

일요일, 11월 20, 2011

싸가지와 느자구

싸가지와 느자구
Source: http://blog.daum.net/ysnaju/8673856


싸가지와 느자구종종 경우 없고 버릇 없는 사람을 보면 "늦쪽바가지 없다"는 말을 썼더니 어떤 이가 "그게 뭔 말이냐?"고 물어온다. 가만 생각해보니 대체나 확실한 의미를 알고 쓴 말을 아닌 듯하여 말의 뿌리를 찾아 나섰다.

인터넷 몇 곳을 뒤져봐도 정확하게 '늦쪽바가지'라는 말의 흔적은 찾기 어렵고 아마도 이건 전라도 특히 나주에서 나고 자라면서 주워들은 이쪽 사람들의 방언이 아닐까 싶고, 늦없다, 느자구없다에서 좀 더 어감을 강하게 하기 위해서 나 혼자 만들어 쓴 말이 아닐까 싶기도 하다.

전라도 말에는 '싸가지'와 비슷한 의미를 갖는 '느자구'라는 말이 있다. 이 말도 '싸가지'처럼 '느자구 있다'나 '느자구 없다'처럼 존재 동사인 '있다'나 '없다'와만 어울려 쓰이는 특징을 갖는다. '느자구'는 어원적으로 '늦'이라는 명사에 '-아구'라는 접미사가 결합된 것으로 보아야 한다.

명사 '늦'은 전라도 말에서 '늣'으로 홀로 쓰이는 수도 있는데, 그 의미는 '느자구'와 같다. 그래서 '쩌 놈은 허는 것이 늣이 있어'라 하기도 하고, '늣 없는 놈헌테는 기대를 말아야제'라 쓰기도 한다. 이 '늣'은 옛말에 '늦'으로 나타나는데, <조짐>이나 <징조>를 뜻하던 말이었다.

그래서 『용비어천가』에는 '寶位 실 느지르샷다(是寶位將登之祥)'와 같은 말이 보이고, 『월인석보』에는 '죽사리 버서날 느지오'와 같은 표현도 나타난다. 이 옛말의 '늦'이 전라도 말에서 '늣'으로 변했지만, 접미사 '-아구'가 붙은 '느자구'에는 원래의 형태가 그대로 남아 있다.

이처럼 '늦'이 홀로 쓰일 때에는 '늣'이 되지만 복합어에서는 '늦'으로 남아 있는 것은, 언어 변화에서 흔히 볼 수 있는 현상이다. 복합어 안에서는 언어 변화가 잘 일어나지 않기 때문이다.

'싸가지'가 구체적 명사인 '싹'으로부터 파생되어 <앞이 트일 징조>와 같은 추상적 의미로 변해 갔다면, '느자구'는 처음부터 <징조>나 <조짐>의 뜻을 가졌던 것이다. 옛말 '늦'이 가치 중립적인 <징조>의 뜻만을 가졌던 것인지, 아니면 긍정적인 의미인 <앞으로 일이 잘 될 징조>를 가졌던 것인지에 대해서는 확인이 필요한 일이나, '느자구'는 '싸가지'와 달리 애초부터 추상적 의미를 가졌던 것임은 분명하다.

오늘날 '싸가지 없다'나 '느자구 없다'는 사람의 행동이나 말이 형편없음을 가리키는 의미로 쓰인다. 원래는 그 형편없는 말이나 행동으로 미루어 그 사람의 앞날 역시 형편없으리라는 뜻이 담겼을 터이지만, 근자에는 장래에 대한 부정적 징조보다는 단순히 눈앞에 벌어지는 행태가 형편없음을 의미하는 것으로 남게 되었다.



-----
Cheers,
June

목요일, 11월 03, 2011

Khan Academy; A free world-class education for anyone anywhere.

Khan Academy
Source: http://www.khanacademy.org/


A free world-class education for anyone anywhere.

The Khan Academy is an organization on a mission. We're a not-for-profit with the goal of changing education for the better by providing a free world-class education to anyone anywhere.
All of the site's resources are available to anyone. It doesn't matter if you are a student, teacher, home-schooler, principal, adult returning to the classroom after 20 years, or a friendly alien just trying to get a leg up in earthly biology. The Khan Academy's materials and resources are available to you completely free of charge.


-----
무료 동영상 강의가 많네요... ^^

Cheers,
June

Get Better

Get Better
Source: http://swanson.github.com/blog/2011/10/24/get-better.html


October 24, 2011
… the sooner you care, the better you’ll make. The better you’ll do. And thebetter you’ll live.
Take 5 minutes to:
  • Read the most interesting blog post in your RSS reader
  • Look through the code you wrote today and find a place to improve
  • Write down any problems you encountered today
  • Learn a new keyboard shortcut for your IDE, source control tool, or shell
  • Ask a co-worker if they’ve read anything interesting lately
Take 15 minutes to:
  • Refactor a piece of code you wrote this week
  • Find code that’s missing tests and add one
  • Update your team/company wiki
  • Read a few of the top stories on news.yc or /r/programming
  • Read a chapter in a technical book
  • Write a thoughtful comment on a blog post
Take 30 minutes to:
  • Watch a talk from a conference that interests you
  • Write a blog post about a bug you encountered and how you fixed it
  • Write a blog post about something you’ve been working on or learning about
  • Listen to a podcast - here are some I like: Podcast Roundup
  • Do a kata or a problem on Project Euler
  • Attend a brownbag or lunch-and-learn
Take an hour a week to:
  • Help an open source library that you use - patchs, documentation, bugs
  • Work on a side-project on your own
  • Watch a screencast about something new
  • Try to answer some questions on StackOverflow
  • Do prep work to host a brownbag or meetup talk
  • Take an online class: Stanford courses on iPhoneMachine LearningAI
Take 2 hours a month to:
  • Go to a local dev meetup
  • Take someone you look up to out to lunch and pick their brain
  • Do self reflection and update your position on The Long Road
  • Plan out how to Get Better over the next month
Take a weekend a year to:
Take one minute a day - just 60 seconds - to stop and ask yourself this question:
Did I Get Better today?
If you aren’t happy with your answer, do something about it.


-----
Cheers,
June

Engineering - Over/Under: I'm a Serial Over Committer

Engineering - Over/Under: I'm a Serial Over Committer
Source: http://swanson.github.com/blog/2011/11/02/engineering-over-under.html


November 02, 2011
Over committing - taking on too many things at once - is a pretty established anti-pattern.
When you have too much work in progress, you start to lose focus. You might be able to keep your head above water, but you end up just doing an okay job on everything, instead of doing a great job on anything.
Taking on a bunch of extra work and then not delivering is a big hit to your credibility. Crunch time comes and you feel the pressure; you start getting stressed and everything is on the verge of falling apart.
Okay, so I’ll avoid over committing to a bunch of stuff, you might say - I’ve got this all figured out!
Well, not exactly.
Suppose your manager comes over and asks if you want to work on a speculative new project - it’s interesting technology but it’s going to require some extra work on your own time. You decide to pass on the opportunity. No problem.
Nothing undesirable happens immediately as a result - except that maybe your manager is a little bummed out. But maybe the next time one of these projects comes up, they’ll ask Bob first. Maybe that speculative project turns into a full fledged project and you missed your chance to work on it.
What if you said yes to the initial offer, but didn’t follow through? You were gung-ho that afternoon but 2 weeks later, you’ve lost all interest. How is that perceived? Do you lack the ability to be a finisher?
With that in mind, do you go back in time and agree to the project even though you had 20 other things on your plate? The desire to not under commit and miss an opportunity has caused you to over commit!
Maybe this isn’t an issue for anyone else - feel free to chime in and tell me I’m way over analyzing - but as a young developer trying to improve my craft and move up the hierarchy at work this is something I struggle with frequently.
I am a serial over committer.
I start new side projects when I find something that excites me - I hype myself up, maybe I start a series of blog posts but then it fizzles. I sign up to give talks almost every month, often with nothing more than a basic idea of what I’m going to be presenting about two weeks later.
Right now, I’m working on two extra work-related projects, helping organize a friendly blogging competition, finishing a book club and I signed up to pitch an idea for a new series of internal projects at the end of the month. This isn’t a badge of honor or something to brag about; I’ve committed myself to way more than I should have and it’s not sustainable.
“But you never finish anything!” is a meme that co-workers jokingly needle me with.
It’s a flaw of mine that I’m trying to work on. I’m starting to learn why I do it - I don’t want to miss out on any opportunities. I want to be that go-to person, that expert, that guy who Gets Shit Done. And I’m impatient. And I have this irrational fear that I’ll miss that one magically project that I’ll love and another one will never come.
I need to find the right balance of over/under committing. And striking that balance is a hard problem. Like cache invalidation hard.


-----
Cheers,
June