1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

12ステップで作る組込みOS自作入門 M2 Macでの環境構築

Last updated at Posted at 2024-03-18

前提

M2 Macで12ステップ本の環境構築をしようとしたところ、M2MacではVirtualBoxが使えないため著者から配布されているVMイメージが使えない、、と思ったが、UTMという別の仮想環境ツールを使うことで上手くいった。

各項目で参考にさせていただいたサイトを挙げています。この場を借りてお礼を申し上げます。ありがとうございます!
参照される際は、CentOSのバージョンの違いに注意してください。12ステップ本のVMイメージはCentOS6です。

仮想化手順

著者ページから入手したovaファイルをqcow2形式に変換する

(Mac側)
tar -xvf makeos-CentOS-20150504.ova
qemu-img convert -O qcow2 makeos-CentOS-20150504-disk1.vmdk makeos-CentOS-20150504.qcow2

ovaをqcow2に変換し、UTMで起動するまで

生成されたovfファイルから、仮想マシンのスペックを確認する。

ディスク容量:16GB
RAM容量:512MB
CPU数:1

該当箇所は下記の通り。

  <DiskSection>
    <Info>List of the virtual disks used in the package</Info>
    <Disk ovf:capacity="17179869184" ovf:diskId="vmdisk2" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="79cdd9cf-b8a7-4e97-ac22-020853dc3d26"/>
  </DiskSection>

      <Item>
        <rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits>
        <rasd:Caption>512 MB of memory</rasd:Caption>
        <rasd:Description>Memory Size</rasd:Description>
        <rasd:ElementName>512 MB of memory</rasd:ElementName>
        <rasd:InstanceID>2</rasd:InstanceID>
        <rasd:ResourceType>4</rasd:ResourceType>
        <rasd:VirtualQuantity>512</rasd:VirtualQuantity>
      </Item>
        <CPU count="1" hotplug="false">
          <HardwareVirtEx enabled="true"/>
          <HardwareVirtExNestedPaging enabled="true"/>
          <HardwareVirtExVPID enabled="true"/>
          <HardwareVirtExUX enabled="true"/>
          <PAE enabled="true"/>
          <HardwareVirtExLargePages enabled="false"/>
          <HardwareVirtForce enabled="false"/>
        </CPU>

UTMで上記スペックの仮想マシンを作成する

このとき、CPUアーキテクチャはi386にする。いろいろ試してみたが、アーキテクチャによらず起動時のメッセージを見るとi686から変わらずだった。詳細は未調査。

ovaをqcow2に変換し、UTMで起動するまで

これで仮想マシンは作成できたので、開発に使えるようにセットアップしていく。

Linuxのセットアップ

sudoを使えるようにする

sudoersの設定コマンド

sudo visudo

wheelグループにパスワードなしでのsudoを許可する設定のコメントアウトを外す

visudo
%wheel     ALL=(ALL)    NOPASSWD: ALL

userをwheelグループに入れる

usermod -aG wheel user

キーボードレイアウトを変更

※日本語配列のMacを使用している場合は不要。

vim /etc/sysconfig/keyboard
/etc/sysconfig/keyboard
KEYTABLE="us"
MODEL="PC105+inet"
LAYOUT="us"
KEYBOARDTYPE="pc"

再起動すれば反映される。

yumを使えるようにする

CentOS6のサポートが終了しており、既存のリポジトリURLが無効になっている。

下記ページを参考に、ミラーサイトのURLに書き換えることで上手くいった。
追加で1点変更として、/etc/yum.repos.d/CentOS-Base.repo$basearchi386に置換した。仮想マシンのアーキテクチャはi686だが、i686だとURLが存在せず失敗したため。

サポート終了したCentOS6でyumがエラーになる場合の簡単な対処法([errno 14] problem making ssl connection)

なお、URLをi386にしたはずだけど、試しにyum install cifs-utilsをすると、*.i686がインストールされた。ChatGPTに聞くとi686とi386には互換性があるからOK的な回答をもらったけど、真偽は確かめてない。

共有フォルダを設定

CentOS側にMacの共有フォルダをマウント(あきらめた)

下記ページ(環境はCentOS7)を参考にやってみたが、smbclientでMacに接続できなかった。

(Apple/UTM)[https://web.chaperone.jp/w/index.php?Apple/UTM]

CentOS側で共有フォルダ作成し、Macから接続(成功)

参考:
VMware上のCentOSにSambaを用いてMacとの共有フォルダを作る
CentOS 6 sambaのインストール方法

CentOS側でsambaをインストール

sudo yum install samba

共有フォルダを作成

mkdir /home/samba
sudo chmod -R 0777 /home/samba/
sudo chown -R user:user /home/samba

セキュリティ設定(SELinux)

sudo chcon -t samba_share_t /home/samba/

sambaの設定

sudo cp -ap /etc/samba/smb.conf /etc/samba/smb.conf.bk
sudo vim /etc/samba/smb.conf
smb.conf
[samba]
        comment = samba directory
        path = /home/samba
        public = yes
        browseable = yes
        writable = yes
        hosts allow = 127. 192.168.
        guest ok = no

sambaの設定ミスをチェック

testparm

Sambaのパスワードデータベースにユーザーを追加。

sudo pdbedit -a user

ファイアウォールの設定

/etc/sysconfig/iptablesを編集。最後のCOMMITよりも前にポート開放の設定を追加

sudo cp -ap /etc/sysconfig/iptables /etc/sysconfig/iptables.bk
sudo vim /etc/sysconfig/iptables
/etc/sysconfig/iptables
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
-A INPUT -p tcp --dport 445 -j ACCEPT

ここまでの設定変更を反映させる

/etc/rc.d/init.d/iptables restart
/etc/rc.d/init.d/smb restart

Macからアクセスする

Finderで、移動→サーバへ接続(⌘K)し、smb://<ip address>を入力する。
は事前に仮想マシン上で書きコマンドを打ち、eth4のIPアドレスを確認しておく。

ip -4 addr

MacからCentOS6にSSH接続

CentOS6はRSAでの接続を求めてくるが、Mac側ではセキュリティ上の理由でRSA/SHA1 暗号方式の鍵 (ssh-rsa) がデフォルトで無効のため、設定変更して接続できるようにする。

(Mac側) ~/.ssh/config
Host makeos
   HostKeyAlgorithms ssh-dss,ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa
   HostName 192.168.64.7
   User user

これで、下記コマンドによりSSH接続できるようになった。

ssh makeos

参考:
sshで急に接続できなくなった場合の対処方法 (no matching host key type found. Their offer: ssh-rsa,ssh-dss)

一度パスワード認証で接続できたら、公開鍵で入れるようにしておくと以降はパスワード設定がいらなくなるので便利。

下記コマンドで、ssh-keygenでキーを秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を生成して、ssh-copy-idでCentOS側に生成した公開鍵を登録する。

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub makeos

FlashROMへの書き込み

USBを認識させる

MacにUSBシリアル変換ケーブルを接続し、UTMでUSBデバイスの使用を許可する
image.png

lsusbで認識されているか確認する

[user@localhost bootload]$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd 
Bus 001 Device 003: ID 0627:0001 Adomax Technology Co., Ltd 
Bus 001 Device 004: ID 0627:0001 Adomax Technology Co., Ltd 
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

FlashROMに書き込む

sudo h8write -3069 -f20 kzload.mot /dev/ttyUSB0

シリアル通信

インストール済みのminicomを利用した。
テキスト通りの手順でOKのため省略。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?