본문 바로가기

전체 글

(33)
리눅스 하드웨어 리눅스를 개발하다 보면 아무리 OS를 보기만 한다고 하더라도 결국 하드웨어 지식이 필요할 수 밖에 없다. https://www.youtube.com/c/BenEater Ben Eater Subscribe to see tutorial-style videos about electronics, computer architecture, networking, and various other technical subjects. If you want to see more on a particular subject, leave a comment and I'll try my best to add more. If you'd like to support m www.youtube.com 감명깊게 본 유튜버를 추천하려고한다. ..
iOS app 만들기 #2 Swift Closure MVVM에서 헤롱거리고 있을 때 나를 가장 힘들게 한것은 Swift Closure이다. Closure를 이용하면 보다 아름다운 코드를 짤 수 있다. 하지만 반대로 나와 같은 초보자들 (특히 GUI에 익숙하지 않은) 은 왜 이 코드가 작동하는지 이해하기 힘들어 한다는 것이다. 가장 당황스러운건 그냥 List에 Text를 써 넣기만하면 툭툭 작동하는 것인가 이다. var body: some View { List(){ Text("a") Text("b") } } 작동하는거야 그냥 넘어가지만 문제는 왜 작동하는지 모르면 작동이 안될때 어떻게 고쳐야하는지 알수 없다. 바로 다음과 같은 코드를 넣고싶을 때다. for x in deck { Text(x) } deck은 Array로 되어있는 String들일때 List 처..
iOS app 만들기 #1 MVVM iOS 앱 만들기 방법에는 최근 SwiftUI가 지원됨. 듀토리얼의 경우 아래 3가지를 사전에 보는것을 추천 https://developer.apple.com/tutorials/swiftui https://www.youtube.com/playlist?list=PLpGHT1n4-mAsxuRxVPv7kj4-dQYoC3VVu https://www.hackingwithswift.com/quick-start/swiftui 물론 보면 한번에 이해되지 않음. 대략적으로만 훑어본 뒤 하나하나 작업해가는 것이 좋은데 처음 가장 중요한 부분은 MVVM 에 관한 이해이다. 자세한 내용은 결국 하다보면 익숙해지는데 내가 몇가지 어려웠던 점은 M / V / VM 을 나누는 것은 결국 SwiftUI의 몇가지 관습을 따르는 것이 ..
RPI4 에 Linux 빌드 올리기 #3 Linux kernel 이제 마지막 단계인 u-boot에서 kernel만 올리고 실행시키면 된다. ARM 리눅스를 돌리려면 4가지가 필요한데, kernel binary, device tree blob, initramfs, rootfs 이다. 이중 kernel binary, device tree blob의 경우 https://github.com/torvalds/linux.git 클론 후 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig 이후 빌드 하면 /linux/arch/arm64/boot, /linux/arch/arm64/boot/dts/broadcom에 각각 생성된다. rootfs은 사실 너무 나도 다양하게 만들수 있고 여러가지 distribution이 존재하지만 전혀..
RPI4 에 Linux 빌드 올리기 #2 U-boot RPI firmware를 올리고 난 후에는 u-boot을 거치지 않고도 커널을 올려서 바로 리눅스를 올릴 수 있다. 하지만 u-boot를 사용해보고 upstream linux kernel을 하나 하나 빌드해보기 위해 RPI firmware -> u-boot -> linux 순으로 부팅을 한다. 이미 많은 사람들이 시도하였으며 stackoverflow에 가이드도 나와있다. 먼저 u-boot을 받기 위해 https://github.com/u-boot/u-boot.git 을 받은 후 $ cd u-boot $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rpi_arm64_defconfig $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make..
RPI4 에 Linux 빌드 올리기 #1 Target boot Linux 빌드를 하면 기본적으로 x86_64에 진행하지만 hacking의 맛이 떨어지기 때문에(?) 실제 bare metal에 시도한다는 생각으로 타겟에 리눅스를 올리는 진행과정을 적어두려고 합니다. 사실 명령어 한방이면 빌드가 완성되는 buildroot라는 멋진 툴이 있지만, 밑바닥부터 scratch로 진행하려고 하기때문에 가장 적당한 타겟을 생각하다 집에서 놀고 있는 raspberrypi4 모델에 minimal한 linux를 구축해보려고합니다. 준비물 : RPI4 + uart serial * 사실 리눅스를 포팅한다는 것은 보통 새로 개발중인 하드웨어에 직접 코드를 작성해가면서 빌드하는 것을 뜻하지만 이 포스팅은 포팅이 아닌 어떻게 리눅스를 빌드하고, 부팅시키는 것이 목적입니다. 리눅스를 올리기 위해..
linux kernel 개발입문 커널은 이미 30년정도 발전해왔기때문에 초 초 고인물 + 엄근진 그 자체이다. 따라서 의욕이 넘치는 것은 좋지만 지속적으로 관심을 갖는 것이 중요한듯하다. 내가 진행했던 순서는 1. 리눅스와 친해지기 (실제 linux distribution 사용) 2. Documentation 정독 (Working with the kernel development community 부분) 3. kernelnewbie 메일링 리스트 구독 4. mutt 설정 및 각종 tool(vim, ctags, cross-compile) 사용 지속적으로 커널이 무엇을 진행중이고 새로운 부분에서 기여할 공간을 찾고있다. RISC-V, media subsystem, Documentation 에 기여를 하려고 한다 우선 타겟 디바이스 구하고 ..
Macbook M1을 산 이유 저는 맥북을 비싸다고 생각하는 사람 중 한 명이었습니다. 무언가 물건을 산다는 것은 가치 대비 비용 지출을 생각하며 각자의 합리적인 판단을 하고, 저는 당연히 맥북은 사치라고 생각했습니다. 예를 들어 대학생 때 시절, 컴퓨터 전공 특성상 맥을 쓰는 친구들이 많았습니다. 그때마다 저는 왜 맥북을 쓰냐고 물었고, 친구들은 멋지다거나 편리하기 때문이라고 말했습니다. 저는 일단 외관적으로 멋지다는 것은 인정하였습니다. 하지만 단순히 외관상 멋진 것은 저에게 맥의 아름다움 대비 비용 지출의 합당한 이유가 되지는 못했습니다(명품이나 그림 등을 딱히 좋아하지 않았기 때문이죠). 또한 편리하다고 하는 친구들에게는 어떤 부분이 편리하다고 물었습니다. 하지만 대부분의 경우 윈도나 우분투에서 모두 가능한 기능이었고 심지어 ..