--- title: 讀書會整合開發環境教學 - 從零開始的開源地下城 tags: Linux, Linux讀書會, Kernel, 從零開始的開源地下城, COMBO-tw description: 介紹與Linux Kernel相關基本知識 lang: zh-Hant GA: G-2QY5YFX2BV --- # 讀書會整合開發環境教學 ###### tags: `Linux` ## 目錄 [TOC] ## 大綱摘要說明 本讀書會為了避免大家無法在各自的環境下==無法執行==,故==準備了統一的執行環境==,具有以下特色 * 開發工具與環境安裝在Docker中 * Docker開發環境皆放置於Docker Hub上面,可自行更新 * 程式碼專案將放置於Github上面,不會因為Docker容器更新而消失 ## Docker簡易教學 ### 版本說明 * base * 基本工具安裝 * 簡易入門腳本 * QEMU 2.12.0 (for arm) * GDB 8.1 (for arm) * 基本工作空間 (預設給三種可以前往Workspace的方法) * `# workspace` * `# ws` * `# cd /home/workspace` ### 取得容器 `$ sudo docker pull tommychap/raspberrypi:latest` `$ sudo docker image ls` ### 開啟容器 * 第一次 `$ sudo docker run -it -p 5900:5900 tommychap/raspberrypi:latest /bin/bash -name {YOUR_NAME}` * 開啟之前的容器 `$ sudo docker ps -a` `$ sudo docker start {YOUR_NAME}` `$ sudo docker attach {YOUR_NAME}` ### 刪除容器 `$ sudo docker container rm {YOUR_NAME}` ## 建置紀錄 此記錄為從零開始Docker版的開發環境,如使用`tommychap/raspberrypi:latest`者==不需執行== * 安裝Docker([Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)、[Windows](https://docs.docker.com/docker-for-windows/install/)) * 取得最新版的image `$ sudo docker pull ubuntu:16.04` ![](https://hackmd.io/_uploads/rJvhxjZUn.png) * 查看已下載的image `$ sudo docker images` ![](https://hackmd.io/_uploads/B10nxo-Ln.png) * 啟動已下載的image `$ sudo docker run -t -i ubuntu:16.04 /bin/bash` ![](https://hackmd.io/_uploads/SkG6eiW8h.png) * 安裝開發環境 ``` # apt-get update # apt-get upgrade # # 安裝所需工具 # apt-get install gcc build-essential automake gcc-arm-linux-gnueabihf vim git wget python pkg-config zlib1g-dev libglib2.0-dev libpixman-1-dev tmux flex bison unzip libncurses5-dev bc -y # mkdir /home/workspace # cd /home/workspace # # 安裝 QEMU 2.12.0 (方法請看第一章-樹莓派介紹) # # 安裝 GDB 8.1 (方法請看第一章-樹莓派介紹) # # 建立簡易腳本 ``` ### 建立簡易腳本 * 初始化Git儲藏庫 (init_git.sh) ```bash # !/bin/bash echo -e "\e[34mWelcome to the Linux Book Club.\e[0m" echo -e "First, please enter \e[33myour email:\e[0m" read email echo -e "Second, please enter \e[33myour username:\e[0m" read username echo "$email/$username" cd /home/workspace git clone https://github.com/TommyChap/LinuxBookClub.git echo -e "\e[32mClone finish.\e[0m" cd LinuxBookClub git config user.email "$email" git config user.name "$username" git checkout -b $username git pull echo -e "\e[32mYou can begin your learnning.\e[0m" ``` * 自動下載Raspberry Pi Image (start_qemu.sh) ```bash #!/bin/bash if [ -f "2018-11-13-raspbian-stretch.img" ]; then echo "" else wget https://downloads.raspberrypi.org/raspbian/images/raspbian-2018-11-15/2018-11-13-raspbian-stretch.zip -O 2018-11-13-raspbian-stretch.zip unzip 2018-11-13-raspbian-stretch.zip rm -rf 2018-11-13-raspbian-stretch.zip fi qemu-system-aarch64 -M raspi2 -kernel kernel7.img -sd 2018-11-13-raspbian-stretch.img --append "root=/dev/mmcblk0p2 rootwait" -dtb bcm2710-rpi-3-b.dtb -m 512M -vnc :0 -serial stdio ``` ## 參考資料 - [Docker —— 從入門到實踐](https://philipzheng.gitbooks.io/docker_practice/content/) - [Ubuntu Docker官方安裝文件](https://docs.docker.com/install/linux/docker-ce/ubuntu/) - [[Day 4] 上傳 Docker Image 到 Docker Hub](https://ithelp.ithome.com.tw/articles/10192824)