分区结构
在img写入后, 会产生两个分区
EMUELEC: 用于启动的文件, 例如dtb文件等, 以及system.img & system.img.md5, EmuELEC的系统文件都在这个img里面
STORAGE: 空
运行中目录结构
/dev/mmcblk1p1 511.7M 373.6M 138.2M 73% /flash /dev/loop0 357.5M 357.5M 0 100% / /dev/mmcblk1p2 28.6G 3.5G 25.1G 12% /storage
启动后, EMUELEC分区被挂载为 /flash, STORAGE分区被挂载为 /storage, system.img 通过 /dev/loop0 被挂载为系统根目录 /
所以, 用户能修改的仅仅是 /flash 和 /storage 目录下的内容
root用户的home目录被定位到 /storage, 如果需要添加登录后自动执行的命令(例如添加alias), 可以直接在 /storage 目录下新建 .profile 文件来实现
系统启动的服务是通过systemd管理的, 启动脚本位于 /usr/lib/systemd/system/ 下, 因为是过loop设备挂载的, 所以这里面的文件都不可修改. 默认的启动target为
EmuELEC:/usr/lib/systemd/system # systemctl get-default emuelec.target EmuELEC:/usr/lib/systemd/system # ll def*.* lrwxrwxrwx 1 root root 14 Nov 19 00:42 default.target -> emuelec.target
服务依赖关系为
EmuELEC:/usr/lib/systemd/system # systemctl list-dependencies emuelec.target emuelec.target ● ├─emuelec-autostart.service ● ├─emustation.service ● ├─retroarch.service ● ├─tmp-assets.mount ● ├─tmp-cores.mount ● ├─tmp-database.mount ● ├─tmp-joypads.mount ● ├─tmp-overlays.mount ● ├─tmp-shaders.mount ● ├─graphical.target ● │ ├─unbind-console.service ● │ └─multi-user.target ● │ ├─avahi-daemon.service ● │ ├─connman.service ● │ ├─dbus.service ● │ ├─entware.service ● │ ├─iptables.service ● │ ├─nmbd.service ● │ ├─pulseaudio.service ● │ ├─rpcbind.service ● │ ├─sixaxis@multi-user.service ● │ ├─smbd.service ● │ ├─sshd.service ● │ ├─systemd-ask-password-wall.path ● │ ├─systemd-logind.service ● │ └─basic.target ● │ ├─add-entropy.service ● │ ├─amlogic-dvb.service ● │ ├─fstrim.service ● │ ├─hwdb.service ● │ ├─kvimfan.service ● │ ├─openvfd.service ● │ ├─show-version.service ● │ ├─swap.service ● │ ├─tmp.mount ● │ ├─var.mount ● │ ├─wetekdvb.service ● │ ├─paths.target ● │ ├─slices.target ● │ │ ├─-.slice ● │ │ └─system.slice ● │ ├─sockets.target ● │ │ ├─dbus.socket ● │ │ ├─systemd-initctl.socket ● │ │ ├─systemd-journald-audit.socket ● │ │ ├─systemd-journald-dev-log.socket ● │ │ ├─systemd-journald.socket ● │ │ ├─systemd-udevd-control.socket ● │ │ └─systemd-udevd-kernel.socket ● │ ├─sysinit.target ● │ │ ├─debug-shell.service ● │ │ ├─debugconfig.service ● │ │ ├─dev-hugepages.mount ● │ │ ├─dev-mqueue.mount ● │ │ ├─kmod-static-nodes.service ● │ │ ├─machine-id.service ● │ │ ├─openssl-config.service ● │ │ ├─sys-fs-fuse-connections.mount ● │ │ ├─sys-kernel-config.mount ● │ │ ├─sys-kernel-debug.mount ● │ │ ├─systemd-ask-password-console.path ● │ │ ├─systemd-hwdb-update.service ● │ │ ├─systemd-journal-catalog-update.service ● │ │ ├─systemd-journal-flush.service ● │ │ ├─systemd-journald.service ● │ │ ├─systemd-modules-load.service ● │ │ ├─systemd-sysctl.service ● │ │ ├─systemd-tmpfiles-setup-dev.service ● │ │ ├─systemd-tmpfiles-setup.service ● │ │ ├─systemd-udev-trigger.service ● │ │ ├─systemd-udevd.service ● │ │ ├─tz-data.service ● │ │ ├─usercache.service ● │ │ ├─userconfig.service ● │ │ ├─local-fs.target ● │ │ │ ├─kernel-overlays.service ● │ │ │ ├─libmali.service ● │ │ │ ├─tmp.mount ● │ │ │ └─var.mount ● │ │ └─swap.target ● │ └─timers.target ● │ └─systemd-tmpfiles-clean.timer ● └─multi-user.target ● ├─avahi-daemon.service ● ├─connman.service ● ├─dbus.service ● ├─entware.service ● ├─iptables.service ● ├─nmbd.service ● ├─pulseaudio.service ● ├─rpcbind.service ● ├─sixaxis@multi-user.service ● ├─smbd.service ● ├─sshd.service ● ├─systemd-ask-password-wall.path ● ├─systemd-logind.service ● └─basic.target