1.Windows10系统安装与配置
1.1 Win10安装配置(含Uboot制定)
1.相关链接 Windows10 vm: https://developer.microsoft.com/en-us/windows/downloads/virtual-machines Windows10 pre: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvanced Windows10 ver: BuildXXX.YYYY、VersionYearMonth、YearH1、YearH2,H=HalfYear VS installation: https://docs.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=vs-2019 WSL changelog: https://docs.microsoft.com/en-us/windows/wsl/release-notes WSL instruction: https://docs.microsoft.com/en-us/windows/wsl/reference ROS2 guidance: https://github.com/ros2/ros2 vcredist all links: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads suitesparse-metis-for-windows: https://github.com/jlblancoc/suitesparse-metis-for-windows 2.下载VS:C:vs_enterprise.exe --layout C:VS2019Ent --lang en-US --add Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended --add Microsoft.VisualStudio.Workload.NativeCrossPlat;includeRecommended;includeOptional --add Microsoft.Component.PythonTools;includeRecommended --verify --fix 3.安装VS:断网后双击C:VS2019Entvs_setup.exe安装 |
4..启用功能 SMB: SMB 1.0/CIFS File Sharing Support SMB Direct NFS Service Telnet Client Telnet Server OpenSSH Client OpenSSH Server FTP Server Virtual Machine Platform Windows subsystem for Linux Optional: Hyper-V && Windows sandbox 5.重要软件 (1)Base+Docker (2)Foxy+Gazebo (3)Nav2+TB3 (4)[Webots+WebotsROS2] (5)CudaToolkit |
1.EFI启动概要 (1)主干启动流程:主板固件加载EFI文件àEFI文件加载配置文件à配置文件加载内核文件 (2)加载EFI文件 1)默认加载EFI:/esp/efi/boot/bootx64.efi、可由任何系统的efi或自定义的efi重命名得到 2)其它路径EFI:由第三方工具(如bootice)添加其它路径的efi到UEFI启动管理器、或先加载能启动efi的efi(如uefishell.efi)再由此efi启动其它路径的efi 1)WindowsEFI:/esp/efi/microsoft/boot/bootmgrfw.efi、此文件可复制到其它地方(因为其指向的启动配置文件使用的是绝对路径)且为方便管理可复制到/esp/efi/boot 2)UbuntuEFI:/esp/efi/ubuntu/shimx64.efi&&grubx64.efi、此两文件可复制到其它地方(因为其指向的启动配置文件使用的是绝对路径)且为方便管理可复制到/esp/efi/boot (3)加载配置文件 Win10OS:/esp/efi/microsoft/boot/bootmgrfw.efi à/esp/efi/microsoft/boot/bcd&&others UbuntuOS:/esp/efi/ubuntu/grubx64.efi à/esp/efi/ubuntu/grub.cfgà/boot/grub/grub.cfg&&x86_x64-efi&&others Win10ISO:/iso/efi/boot/bootx64.efi à/iso/boot/bcd&&&boot.sdi&&others UbuntuISO:/iso/efi/boot/bootx64.efi à/iso/boot/grub/grub.cfg&&x86_x64-efi&&others ClonezillaISO:同UbuntuISO (4)加载内核文件:不同的启动配置文件,其指向的系统核心文件不同 2.EFI启动盘制作 (1)操作原理:基于EFI启动原理可知将操作系统或安装盘复的相应的文件到esp分区即可,以下操作基于已经安装操作系统进行 (2)对Win10:复制/esp/efi/microsoft/boot/*和/iso/boot/boot.sdi(用于WinPE)到/esp/efi/microsoft/boot、编辑/esp/efi/microsoft/boot/bcd添加Win10OS和Win10PE (3)对Ubuntu:复制/esp/efi/ubuntu/*和/boot/grub/*到/esp/efi/ubuntu、编辑/esp/efi/ubuntu/grub.cfg添加UbuntuOS和UbuntuCD (3)对Ubuntu:grub-install --efi-directory=/mnt/sdx/A --boot-directory=/mnt/sdx/B --removable /dev/sdx、前者自动创建/mnt/sdx/A/efi/boot&ubuntu、后者自动创建/mnt/sdx/B/grub、复制/mnt/sdx/A/efi/ubuntu/*和/mnt/sdx/B/grub/*到/esp/efi/ubuntu、编辑/esp/efi/ubuntu/grub.cfg添加UbuntuOS和UbuntuCD (4)添加rEFInd:复制refindXXX/refind/drivers_x64&&tools_x64&&refind.conf-sample&&icons到/esp/efi/refind、重命名配置文件为refind.conf并配置启动项 ▲:若引导UbuntuCD不成功则可将/usr/lib/syslinux/memdisk到/esp/efi/ubuntu/grub再尝试 ▲:grub2可启动ubuntuOS、ubuntuCD、efiFile,BCD可启动winOS、winPE.wim、winos.vhd、efiFile ▲:更改Grub默认值编辑/etc/default/grub、增加Grub入口编辑/etc/grub.d/40_custom、执行update-grub后将更新到/boot/grub/grub.cfg 3.第三方启动盘AIO(all in one) 主页: https://www.aioboot.com/en/ && https://github.com/nguyentumine/AIO-Boot 使用:https://www.aioboot.com/en/install-grub2-from-windows && https://www.aioboot.com/en/ubuntu-bootable-usb/ |
1.2 WSL2安装配置(含Ubuntu配置)
1.Basic操作 下载UbuntuXXX:MSStore下载并备份到期望位置后卸载之 安装UbuntuXXX:命令导入install.tar.gz(避免新建用户)或运行EXE正规安装 配置WinTerminal:命令行为wsl.exe -d ubuntuxxx -u root 快速访问LinuxWLS:文件浏览器\wsl$ 安装盘启动ISO先执行:sudo umount -l /isodevice gedit /etc/apt/source.list apt-get update apt-get upgrade apt-get install -d minicom squashfs-tools-ng gparted apt-get install -d openbsd-inetd telnetd net-tools apt-get install -d openssh-server openssh-client apt-get install -d samba samba-common smbclient cifs-utils apt-get install -d nfs-kernel-server nfs-common rpcbind apt-get install -d vsftpd ftp apt-get install -d git git-core apache2 apache2-utils apt-get install -d cmake cmake-qt-gui python3 python3-vcstool python3-colcon-common-extensions apt-get install -d synaptic bleachbit ubuntu-restricted-extras guvcview ffmpeg libssh-dev apt-get install -d qtcreator qtbase5-dev libqt5opengl5-dev libqt5serialport5-dev libqt5sensors5-dev apt-get install -d libqt5charts5-dev libqt5datavisualization5-dev libqt5x11extras5-dev apt-get install -d qtmultimedia5-dev qtdeclarative5-dev qtpositioning5-dev apt-get install -d ninja-build rsync zip#VS apt-get install -d xfce4 xfce4-terminal#WSL apt-get install -d xrdp dconf-editor gdm3 lightdm barrier#PC apt-get install -d fcitx fcitx-table-wbpy#PC、配置输入系统为fcitx五笔拼音且提示安装 安装bcompare&vscode:apt-get install ./xxx.deb 这里点杠很重要#PC、其它语言支持时选否 安装docker:https://docs.docker.com/engine/install/ubuntu #PC apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - apt-key fingerprint 0EBFCD88 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update apt-get install docker-ce docker-ce-cli containerd.io 安装timeshift:https://github.com/teejee2008/timeshift #PC sudo add-apt-repository -y ppa:teejee2008/timeshift sudo apt-get update sudo apt-get install timeshift 安装systemback:https://github.com/BluewhaleRobot/systemback #PC sudo sh -c 'echo "deb [arch=amd64] http://mirrors.bwbot.org/ stable main" > /etc/apt/sources.list.d/systemback.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 7D9C279F sudo apt-get update sudo apt-get install systemback 由于systemback本身bug需在重装后先如下操作再重启(具体软链接与系统版本相关) rm -r bin sbin lib lib32 lib64 libx32 ln -s usr/bin bin & ln -s usr/sbin sbin & ln -s usr/lib lib & ln -s usr/lib32 lib32 & ln -s usr/lib64 lib64 恢复时要将/boot/efi安装到某分区(安装后再删除该分区即可)才能正确地安装/boot 选择BleachBit:除FreeDiskSpace和Memory处的所有选项 apt-get clean: 清理所有安装包 apt-get autoclean: 清理已被卸载的软件的安装包 apt-get autoremove: 删除系统认为不再使用的孤立软件 apt-get remove --purge softname: 卸载指定软件且删除配置 在/root下建立:app(用于安装相关软件)、start.sh(添加所有启动项) 2.配置Telnet vim /etc/inetd.conf vim /etc/pam.d/login #注释auth requisite pam_nologin.so以允许root登录 /etc/init.d/openbsd-inetd restart netstat -a | grep telnet #display{tcp…telnet…} 连接命令telnet ip 3. 配置SSH vim /etc/ssh/sshd_config dpkg-reconfigure openssh-server /etc/init.d/ssh restart ps -e |grep ssh #display{…sshd} 连接命令ssh username@ip 连接失败检查是否需要删除缓存:C:UsersAdministrator.ssh 4. 配置Samba vim /etc/samba/smb.conf smbpasswd -a root /etc/init.d/smbd restart smbclient -L ip -N mount -t cifs -o username=root,password=aaron //ip/sharedPath localPath umount localPath #windows10: \ip in Explorer #clear cache: net use * /del /y 5. 配置NFS vim /etc/exports /etc/init.d/rpcbind restart /etc/init.d/nfs-kernel-server restart showmount -e ip mount -t nfs -o nolock ip:/sharedPath localPath umount localPath #Window10 HKEY_LOCAL_MACHINESOFTWAREMicrosoftClientForNFSCurrentVersionDefault create AnonymousUid QWORD 0 create AnonymousGid QWORD 0 reboot windows mount -o nolock \ipsharedPath driveName: umount driveName: 6. 配置FTP vim /etc/vsftpd.conf vim /etc/ftpusers应无root和其它期望用于登录的本地账户 vim /etc/vsftpd.chroot_list应有root和其它可跨自主目录的本地用户 /etc/init.d/vsftpd restart 命令访问ftp ip 或文件浏览器访问ftp://ip 7.安装foxy&noetic&gazebo11&tb3&cartographer&nav2安装ROS1是为兼容第三方库 apt-get install ros-foxy-desktop ros-noetic-desktop-full ros-foxy-ros1-bridge ros-foxy-move-base-msgs apt-get install gazebo11 ros-foxy-gazebo-ros-pkgs ros-noetic-gazebo-ros-pkgs apt-get install ros-foxy-turtlebot3* ros-foxy-cartographer* ros-foxy-navigation2 ros-foxy-nav2-bringup 安装tb3sim:当前只能https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/手动编译 可下载https://github.com/osrf/gazebo_models或http://models.gazebosim.org/置于/root/.gazebo 8.安装webots&webots_ros2&nvidia&cuda apt-get install ./webots_xxx_amd64.deb apt-get install ros-foxy-webots-ros2* ros-noetic-webots-ros 查看推荐:ubuntu-drivers devices 查看安装:nvidia-smi 切换显卡:nvidia-settings 查看当前:settings->about apt-get install -d nvidia-driver-xxx #installation after system backup apt-get install -d nvidia-cuda-toolkit #nvcc --version 9.检测并安装常用开发库 (1)便携库:eigen3、gflags、glog、ceres、spdlog (2)基本库:qt5、opencv (3)大型库:ros2、webots (4)扩展库:octomap&octovis&dynamicEDT (5)Python库:opencv-contrib-python、PyQt5、PyQtChart、PyQtDataVisualization 查看CV版本:import cv2 à cv2.__version__ 查看QT版本:import PyQt5.Qt as Qt à Qt.PYQT_VERSION_STR (6)链接失败:ln -sf /usr/bin/x86_64-linux-gnu-ld.gold /usr/bin/ld |
PC:启用root账户 sudo passwd root 设置密码 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf追加greeter-show-manual-login=true /etc/pam.d/gdm-autologin注释auth required pam_succeed_if.so user!= root quiet_success /etc/pam.d/gdm-password注释auth required pam_succeed_if.so user!= root quiet_success /root/.profile注释mesg n 2> /dev/null || true追加tty -s && mesg n || true PC:启用root声音 终端执行(临时)或/root/.profile追加(永久):pulseaudio --start --log-target=syslog 设置启动菜单:/etc/default/grub设置GRUB_TIMEOUT&STYLE=menu&30、终端update-grub PC:启用远程桌面 1)setting->sharing->ScreenSharing&RemoteLogin: ActiveWithEthernet&&On 2)apt install xrdp dconf-editor synaptic bleachbit 3)dconf-editor->org->gnome->desktop->remote-access: uncheck require-encryption 4)ufw allow 3389 5900 5)查看显管:cat /etc/X11/default-display-manager或systemctl status display-manager 6)切换显管:dpkg-reconfigure gdm3/lightdm/sddm 7)Barrier设置屏幕名:AaronUPC PC:docker相关配置 配源:vim /etc/docker/daemon.json: {"registry-mirrors": ["http://hub-mirror.c.163.com"]} 重启:systemctl restart docker.service #系统转移设备后需删除/var/lib/docker后重启才可用 GUI界面:https://www.portainer.io/installation docker pull portainer/portainer-ce mkdir /root/PortainerCE docker run -d -p 9000:9000 -h PortainerPC--name=PortainerPC --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /root/PortainerCE:/data portainer/portainer-ce Browser: http://localhost:9000 ROS镜像: https://github.com/osrf/docker_images docker pull osrf/ros:foxy-ros1-bridge docker pull osrf/ros:noetic-desktop-full-focal docker pull osrf/ros:foxy-desktop 其它镜像: WSL:配置xfce4 Win10启动XLaunch(设置防火墙允许其通过) echo "export DISPLAY=winIP:0.0" >> ~/.bashrc source ~/.bashrc startxfce4 1./etc/apt/sources.list重写 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
2./etc/inetd.conf应有 telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 3./etc/ssh/sshd_config设置 PermitRootLogin yes PasswordAuthentication yes
4./etc/samba/smb.conf追加 [root] comment = root directory path = /root writeable = yes browseable = yes valid users = root [ubuntu] comment = system directory path = / writeable = yes browseable = yes valid users = root 5./etc/exports追加 /root *(insecure,rw,sync,no_subtree_check,no_root_squash) / *(insecure,rw,sync,no_subtree_check,no_root_squash) #*: 所有能ping到的主机可挂载 #192.168.0.*: 指定网段的主机可挂载 #192.168.1.12: 仅此主机能挂载 #ro/rw:只读/读写 #sync:同步 #no_root_squash: 不降低root用户的权限 6./etc/vsftpd.conf查找如下项并设值 local_enable=YES#允许本地用户登录 write_enable=YES#允许上传 local_umask=000#操作权限无限制 chroot_local_user=YES#限制本地用户在自主目录 chroot_list_enable=YES#使指定本地用户可跨自主目录 chroot_list_file=/etc/vsftpd.chroot_list #可跨自主目录的本地用户 ftp>help [cmd] ftp>quit ftp>status ftp>dir [dir] ftp>ls ftp>verbose ftp>pwd ftp>cd dir0 ftp>lcd [dir1] ftp>delete file ftp>rename src dst ftp>mkdir dir ftp>rmdir dirname ftp>get file0 [file1] ftp>put file1 [file0]
7.测试tb3&cartographer&nav2 (1)公共环境设置 export TURTLEBOT3_MODEL=burger或waffle或waffle_pi export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH: /root/app/ros2ex/tb3sim/turtlebot3_gazebo/models source /root/app/ros2ex/out/install/setup.bash && source /usr/share/gazebo/setup.sh (2)测试tb3sim基于tb3PKG ros2 launch turtlebot3_gazebo empty_world.launch.py ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py (3)测试cartographer基于tb3PKG ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True ros2 run turtlebot3_teleop teleop_keyboard ros2 run nav2_map_server map_saver_cli -f /root/app/map (4)测试nav2基于tb3PKG ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py 复制/opt/ros/foxy/share/nav2_bringup/launch/bringup_launch.py 为/opt/ros/foxy/share/nav2_bringup/launch/nav2_bringup_launch.py ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=/opt/ros/foxy/share/turtlebot3_navigation2/map/map.yaml (5)测试nav2基于nav2PKG 8.测试ros2webots (1)测试EPuck 配置:source /opt/ros/foxy/setup.bash 启动:ros2 launch webots_ros2_epuck robot_launch.py 速控:ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" 建图:ros2 launch webots_ros2_epuck robot_tools_launch.py rviz:=true mapper:=true 导航:ros2 launch webots_ros2_epuck robot_tools_launch.py rviz:=true nav:=true (2)测试Turtlebot3 配置:source /opt/ros/foxy/setup.bash && export TURTLEBOT3_MODEL=burger 启动:ros2 launch webots_ros2_turtlebot robot_launch.py 建图导航:参见官网 |
1.3 ROS2安装配置(含Python配置)
1.安装ROS2-Core包 (1)下载并解压ROS2XXX到D:app os2 (2)基于D:app os2Scriptsxxx.py安装相应的Python版本到相应的路径并追加Path (3)安装OpenSSL到D:app os2openssl并添加OPENSSL_CONF和追加Path (4)编译OpenCV到D:appopencv并添加OpenCV_DIR和追加Path (5)安装辅助工具:git、cmake、bcompare 2.安装ROS2-Choco依赖 预设置:set ChocolateyInstall=D:app os2choco #先设置此变量再安装chocolatey 下载包:choco download ??? 安装包:choco install -y -s D: mp asio cunit tinyxml-usestl tinyxml2 log4cxx bullet curl 3.安装ROS2-Python依赖 预安装:安装Python到~ os2scripts*.py中指定的位置 下载包:python -m pip download catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-contrib-python pyparsing pyyaml setuptools pydot PyQt5 PyQtChart PyQtDataVisualization vcstool colcon-common-extensions transforms3d -d D: mp 安装包:python -m pip install --prefix=D:app os2python --no-index --find-links=D: mp catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-contrib-python pyparsing pyyaml setuptools pydot PyQt5 PyQtChart PyQtDataVisualization vcstool colcon-common-extensions transforms3d 4.测试并配置ROS2:配置参见lib.doc call D:app os2setup.bat 或 参见lib.doc中内省工具调用配置 ros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener 5.安装并配置Webots:安装到D:appwebots、配置参见lib.doc (1)运行webots报OpenGL错误:安装CUDA(将自动更新驱动)后禁用集成显卡 (2)运行webots_ros2_xxx出错:删除C:UsersAdministratorAppDataLocalTemp* 6.安装并配置WebotsROS2:迭代克隆代码到D:app ros2webots (1)下载https://github.com/cyberbotics/webots_ros2.git到D:app os2ex (2)下载https://github.com/cyberbotics/urdf2webots.git到D:app os2ex webots_ros2_importerwebots_ros2_importerurdf2webots (3)下载https://github.com/ros-industrial/motoman.git到D:app os2ex webots_ros2_importerwebots_ros2_importerurdf2webots estssourcesmotoman (4)下载https://github.com/ros-controls/control_msgs到D:app os2ex (5)进入D:app os2webotsout并执行:colcon build --merge-install --base-paths .. (6)开发配置:见lib.doc中的ROS2-Python环境配置 7. 8. 9. 10.添加环境变量 (1)只能手动进行的配置(未考虑Path变量) setx -m OPENSSL_CONF D:app os2opensslinopenssl.cfg setx -m OpenCV_DIR D:appopencvoutinstall setx -m PYTHONPATH C:Python38libsite-packages;D:app os2pythonlibsite-packages;D:appwebotslibcontrollerpython38 setx -m WEBOTS_HOME D:appwebots (2)近似setup.bat的配置(未考虑Path变量) setx -m PYTHONPATH %PYTHONPATH%; D:app os2libsite-packages; D:app os2exoutinstalllibsite-packages setx -m AMENT_PREFIX_PATH D:app os2; D:app os2exoutinstall 11.设置Path变量 |
D:appqt5.9.9msvc2015_64in D:appvtkoutinstallin D:appopencvoutinstallx64vc16in D:appoctomapoutinstallin C:Program FilesGitcmd C:Program FilesCMakein C:Python38 C:Python38Scripts D:appwebotslibcontroller D:appwebotsmsys64mingw64in D:app os2in D:app os2Scripts D:app os2optlibcurl_vendorin D:app os2opt viz_ogre_vendorin D:app os2opt viz_assimp_vendorin D:app os2optyaml_cpp_vendorin D:app os2opensslin D:app os2chocoin D:app os2chocolibulletlib D:app os2chocolibcunitlib D:app os2chocoliblog4cxxlib D:app os2chocolib inyxml2lib D:app os2pythonscripts D:app os2exoutinstallin D:wks obotsimoutDebug D:wks obotsimoutRelease C:Windows C:WindowsSystem32 C:WindowsSystem32Wbem C:WindowsSystem32OpenSSH C:WindowsSystem32WindowsPowerShellv1.0 C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.1in C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.1libnvvp C:Program FilesNVIDIA CorporationNsight Compute 2020.2.0 C:Program Files (x86)NVIDIA CorporationPhysXCommon 12.创建快速命令文件:ros2vc.bat、ros2vs.bat set OPENSSL_CONF=D:app os2opensslinopenssl.cfg set OpenCV_DIR=D:appopencvoutinstall set PYTHONPATH=C:Python38libsite-packages;D:app os2pythonlibsite-packages; D:appwebotslibcontrollerpython38 set WEBOTS_HOME=D:appwebots call D:app os2setup.bat call D:app os2exoutinstalllocal_setup.bat ::call "C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDEdevenv.exe" call "C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCAuxiliaryBuildvcvars64.bat" cmd /K D: |
1.4 Win10系统备份(含Grub/UEFI/Squashfs/Dism/WSL/Docker命令)
|
|
1.Grub2命令 (1)常用变量 root:当前所在分区 prefix:当前grub.cfg所有目录 cmdpath:被启动的grubx64.efi所在目录 grub_cpu:x86_64 grub_platform:efi (2)常用指令 reboot&halt:重启&关机 ls&ls (hdX,Y)&ls (hdX,Y):显示所有分区&显示分区类型&显示分区内容(X始于0但Y始于1) ls (hdX,Y)/dir:显露指定目录下的所有内容 set&set var=val&unset var&echo $var:显示所有变&定义或重设变量&删除变量&显示变量 search --file filepath --set=root:在所有分区查找指定文件并将首次找到所在分区设为当前分区 loopback loopX isopath:将指定镜像文件挂载到loopX insmod module:加载指定grub模块,如fat, ntfs, memdisk, ntldr, linux16, initrd16 chainloader filepath:链式加载指定文件 chainloader +1表示加载当前分区引导记录 chainloader (hdX,Y)+1表示加载指定分区引导记录 chainloader (hdX)+1表示加载指定硬盘主引导记录 chainloader efifilepath表示加载指定的efi文件 boot:执行引导,在内核已经加载或chainloader后执行 configfile filepath:加载配置文件 cat filepath:显示指定文件的内容 cmp file1path file2path:比较两个文件是否相同(若相同则无任何显示) (3)常用配置 GRUB_DEFAULT=0 GRUB_TIMEOUT=30 GRUB_TIMEOUT_STYLE=menu/hidden |
2.UEFI命令 (1)常用指令 fsX:进入指定分区 cd dir:进行指定目录 ls [dir]:列举指定目录下的所有文件及目录 path.efi:启动指定efi文件 exit:退出uefishell(将执行下一uefi启动项) (2) 3.squashfs命令 (1)squashfs-tools: https://github.com/plougher/squashfs-tools (2)squashfs-tools-ng:https://github.com/AgentD/squashfs-tools-ng (3)创建系统:gensquashfs (4)浏览系统:rdsquashfs (5)转换系统:sqfs2tar、tar2sqfs (6)对比系统:sqfsdiff 4.dism命令 (1)WIM相关 1)装载:/Mount-Wim /WimFile:F:sourcesinstall.wim /index:1 /MountDir:D:Win10 /ReadOnly 2)卸载:/Unmount-Wim /MountDir:D:Win10 /discard 3)版本详细:/Get-WimInfo /WimFile:F:sourcesinstall.wim 4)装载详细:/Get-MountedWimInfo 6)清理混淆:/Cleanup-Wim 7)恢复关联:/Remount-Wim /MountDir:D:Win10 8)保存修改:/Commit-Wim /MountDir:D:Win10 (2)FFU相关 1)获取:/Capture-Ffu 2)应用:/Apply-Ffu 3)优化:/Optimize-Ffu |
5.wsl命令 (1)常用命令 登录系统:wsl [--distribution osName] [--user userName] 查看系统:wsl --list --all/--running/--quiet/--verbose 关闭所有系统:wsl --shutdown 关闭指定系统:wsl --terminate osName 移除指定系统:wsl --unregister osName (2)默认设置 设置默认系统:wsl --set-default osName 设置默认版本:wsl --set-default-version wslVersion 设置为指定版:wsl --set-version osName wslVersion (3)导入导出 导入系统:wsl --import osName installDir tarPath #若失败则临时设置较大的虚拟内存反复尝试 导出系统:wsl --export osName tarPath 导出/导入的实质:tar与vhdx之间的转换(也可直接备份vhdx) 用导入方式安装:直接导入install.tar.gz、避免新建用户而直接默认root登录 6.docker命令 (0)命令归类 全局查看:version、info、inspect 镜像管理:images|save|load|rmi|history、build|tag|commit、pull|push|search|login|logout、event 容器管理:ps|import|export|rm|rename、create|run 容器操控:start|restart|stop|kill|wait、top|pasue|unpause|exec、stats、logs、port 容器通信:attach、cp、diff、update (1)状态查询 镜像数量:docker images -a 容器数量:docker ps -a 容器进程:docker top 容器能耗:docker stats -a 文件详细:docker inspect ima/con (2)备份恢复 镜像转文件:docker save -o tarPath ima 文件转镜像:docker load -i tartPath 文件转镜像:docker import tarPath 容器转文件:docker export -o tarPath con (3)创建删除 删除镜像:docker rmi -f ima 删除容器:docker rm -fv con 改名容器:docker rename con name 创建容器:docker run/create [options] ima [command] [args] 别名创建镜像:docker tag ima repname:tagname 容器创建镜像:docker commit -p -m “changes” -a “author” conId repname:tagname 编译创建镜像:docker build [options] dir |
(4)开关登录 开机:docker start con 关机:docker stop con 重启:docker restart con 硬关:docker kill con 休眠:docker pause con 复原:docker unpause con 共享终端登录且退出就关机(适合个人):docker attach con 独立终端登录且退出不关机(适合团队):docker exec -it [-u user -w wks -e env] con /bin/bash (5)容器更新管理 更新容器硬件配置:docker update [options] con 交换容器主机数据:docker cp hostPath con:conPath 或 docker cp con:conPath hostPath 查看容器数据更改:docker diff con (6)容器创建详细 --name= -h --hostname= -u --user= -w --workdir= -e --env= -i --interative -t --tty -a --attach=STDIN/STDOUT/STDERR -c --cpu-shares= -m --memory= -v --volume= -p --publish= --network=none/bridge/host/container --dns= (9)典型使用流程:createàstartàexec|attachàstop、镜像为应用名、容器加后缀PC docker create -it -h NoticPC --name NoeticPC -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE -v /tmp/.X11-unix:/tmp/.X11-unix aaron:noetic docker start NoeticPC docker exec -it NoeticPC /bin/bash docker exec -d NoeticPC cmd args docker attach NoeticPC docker stop NoeticPC |
2.Window10开发库安装与配置
2.1 git + cmake + bcompare + python + qt + eigen + gflags + glog + ceres + spdlog + octomap
1.安装git&cmake&bcompare&python:除Python要考虑ROS2外其它默认安装即可 git config --global user.name "user" git config --global user.email user@user.com git config --global core.filemode false git config --global core.autocrlf true #仅Win git config --global diff.tool bc3 git config --global difftool.prompt false git config --global difftool.bc3.path "C:/Program Files/Beyond Compare 4/bcompare.exe" git config --global difftool.bc3.cmd 2.安装qt:安装到D:/app/qt并设置D:/app/qt/5.9.9/msvc2015_64/bin到Path头(非常重要) (1)Qt5.9.9组选择msvc2015-64bit和除QtScript外所有Qt打头的库 (2)DevDes组成选择CBDebuger和MinGW (3)WIN移植到第三方时用C:WindowsSystem32WindowsPowerShellv1.0作为目标路径 (4)WIN移植到第三方时根据实际需求还需要将~/plugins中的某些目录复制到与运行程序相同的目录,当前有:imageformats、sqldrivers、platforms 3.安装eigen&gflags&glog&ceres&spdlog (0)搜索C:和D:确认依赖:eigen和gflags无依赖、glog仅依赖gflags、ceres依赖前三者 (1)安装eigen到CMAKE_INSTALL_PREFIX=D:/app/eigen/out/install且仅安装头文件 (2)安装gflags到CMAKE_INSTALL_PREFIX=D:/app/gflags/out/install且用静态库 (3)安装glog到CMAKE_INSTALL_PREFIX=D:/app/glog/out/install且用静态库 (4)安装ceres到CMAKE_INSTALL_PREFIX=D:/app/ceres/out/install且用静态库 (5)ceres使用说明:直接包含lib文件会缺少宏定义使得在Debug模式下会出错,可通过find_package生成工程找到宏后再在简易配置中加上宏 (6)安装spdlog到CMAKE_INSTALL_PREFIX=D:/app/spdlog/out/install且仅安装头文件或不使用最新版本而使用WinROS2解压包中附带的、spdlog无依赖 4.安装octomap:添加环境变量D:/app/octomap/out/install/bin (1)编译须知(搜索C:和D:确认依赖) 1)删除~/octovis/src/extern以免调用本身提供的旧版本的libqglviewer 2)从octovis工程复制${QT_LIBRARIES}到octovis-share工程才能使之编译通过 3)继承关系变化:ViewerWidgetàQGLVieweràQOpenGLWidget 4)安装到CMAKE_INSTALL_BIN_DIR=D:/app/octomap/out/install (2)编译选项 1)OCTOVIS_OT5=TURE 2)BUILD_OCTOVIS_SUBPROJECT=TRUE 3)BUILD_DYNAMICETD3D_SUBPROJECT=TRUE 4)QT5XXX_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/XXX 5)QGLViewer_INCLUDE_DIR=D:/app/qt/5.9.9/msvc2015_64/include/QGLViewer 6)QGLViewer_LIBRARY_DIR_WINDOWS=D:/app/qt/5.9.9/msvc2015_64/lib/QGLViewer2.lib |
5.安装qglviewer (1)用qt打开QGLViewer.pro,设置C/C++编译器为MVCM14.0(amd64) (2)构建Release版本,无需理会找不到QGLViewer2.lib的错误 (3)复制QGLViewer2.lib为~qtversion_idmsvc2015_64lib (4)复制QGLViewer2.dll到~qtversion_idmsvc2015_64in (5)复制libQGLViewer-qt5.prl和libQGLViewer-qt5.so*到~qtversion_idgcc_64lib (6)复制QGLViewer中所有h文件和VRender到~qtversion_idmsvc2015_64 (7)复制QGLViewer中所有h文件和VRender到~qtversion_id\_gcc_64include (8)在QGLViewer中增加文件QGLViewer #ifndef QT_QGLVIEWER_MODULE_H #define QT_QGLVIEWER_MODULE_H #include "camera.h" #include "config.h" #include "constraint.h" #include "domUtils.h" #include "frame.h" #include "keyFrameInterpolator.h" #include "manipulatedCameraFrame.h" #include "manipulatedFrame.h" #include "mouseGrabber.h" #include "qglviewer.h" #include "quaternion.h" #include "vec.h" #endif (9)这些头文件中包含的关于QT的头文件要作修改,主要是增加包含目录 (10)复制examples为~qtExamplesversion_idqglviewer (11)备份以上文件,对Qt5.9.x全适用,对5.x.x只需更新dll和lib文件 |
2.2 vtk+openvino+opencv
2.安装vtk:添加环境变量D:/app/vtk/out/install/bin (1)搜索C:和D:确认依赖正确、若自动找到QT则残废之 (2)安装到CMAKE_INSTALL_PREFIX=D:/app/vtk/out/install 3.安装opencv:添加环境变量D:/app/opencv/out/install/x64/vc16/bin (1)编译须知(搜索C:和D:确认依赖) 1)修改modules_contrib/cvv/src/stfl/stringutils.cpp中u8”…”为u8”...” 2)非开源OPENCV_ENABLE_NONFREE=ON 3)扩展源OPENCV_EXTRA_MODULES_PATH=D:/app/opencv/modules_contrib 4)安装到CMAKE_INSTALL_PREFIX=D:/app/opencv/out/install (2)配置WITH 1)至少选中:QT、VTK、INF_ENGINE、NGRAPH、TBB 2)至少取消:CUDA、EIGEN 1)QT5XXX_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/XXX 2)VTK_DIR=D:/app/vtk/out/install/lib/cmake/vtk-8.2 3)InferenceEngine_Dir=D:/app/openvino/deployment_tools/inference_engine/share 4)ngraph_DIR=D:/app/openvino/deployment_tools/ngraph/cmake 5)TBB_DIR=D:/app/openvino/deployment_tools/inference_engine/external/tbb/cmake 6)INF_ENGINE_RELEASE=2021010000 (3)配置BUID 1)至少选中:opencv_world 2)至少取消:CUDA_STUBS、TBB、TESTS、PER_TESTS、EXAMPLES、opencv_apps、opencv_cvv(与opencv_world冲突)、 (4)待考虑选项:BLAS_XXX、Ceres_DIR (5)备份须知 1)完成CMake的Generate后备份为out.zip 2)安装并复制OpenCVDLDT中除*.pbd、*.exe、opencv_*外的所有到~/install/x64/vc16/bin 3)删除除out.zip及install外后的所有并进行整体备份 |
1.安装openvino (1)安装过程详细 1)选择D:/app后将自动创建快捷目录D:/app/openvino和原始目录D:/app/openvino_year.month.id 2)安装组件包括:ModelOptimizer(用于模型转换)、OpenModelZoo(避免再次下载)、 IEDevKit(OpenMoelZoo引入)、IERuntimeForXXX(占极小空间)、于是仅OpenCV被排除 3)安装后删除D:/app/openvino而将D:/app/openvino_year.month.id重命名为D:/app/openvino 4)通过BeyondCompare比较复制的与原始的D:/app/openvino来移除其中的快捷目录 5)不为之添加任何永久环境变量而仅针对即时的命令窗口(因为主要想使用它的模型转换器) 6)备份须知:无需单独备份、因为备份文件没比原文件小多少且重装如同解压、所以需要时直接安装即可 (2)最终文件结构 python opencv licensing documentation binsetupvars.bat:环境变量设置脚本 data_processingaudiospeech_recognition:语音识别库API deployment_tools demo:安装验证脚本 tools:模型处理工具 open_model_zoo:推理引擎实例SRC model_optimizer:模型优化器APP ngraph:模型优化库API inference_engine:推理引擎库API、推理引擎驱动DLL、推理引擎示例SRC (3)环境变量说明 C:Program Files (x86)Common FilesIntelShared Libraries edistintel64_wincompiler D:appopenvinodeployment_tools graphlib D:appopenvinodeployment_toolsinference_engineexternal bbin D:appopenvinodeployment_toolsinference_engineexternalhddlin D:appopenvinodeployment_toolsinference_engineinintel64Release D:appopenvinodeployment_toolsinference_engineinintel64Debug D:appopenvinodeployment_toolsmodel_optimizer (4)配置验证详细 设置环境变量:D:appopenvinoin: setupvars.bat 配所有优化器:D:appopenvinodeployment_toolsmodel_optimizerinstall_prerequisites: install_prerequisites.bat 转为DLDT模型:D:appopenvinodeployment_toolsdemo: demo_squeezenet_download_convert_run.bat 推理DLDT模型:D:appopenvinodeployment_toolsdemo: demo_security_barrier_camera.bat |
2.3 orbslam3
2.安装orbslam2(含fbow + g2o +pangolin) (1)安装路径:CMAKE_INSTALL_BIN_DIR=D:/app/octomap/out/install (2)环境变量 (3)手动确认 (4)安装须知 1)可对比原始源码与Window版本源码的区别,然后按readme安装 2)在ORBextractor.cc中添加头文件#include <iterator> 3)删除提供的Thirdparty/eigen而用D:/app/eigen 4)生成g2o工程打开后添加预处理选项WINDOWS 5)编译pangolin时会不能打开”pthread.lib”的错误无需理会 (5)测试用例:解压Vocabulary/ORBvoc.txt.tar.gz到当前目录 1)单目KITTI:.ExamplesMonocularReleasemono_kitti .VocabularyORBvoc.txt .ExamplesMonocularKITTI03.yaml G:data_odometry_gray 3 2)单目EuRoc: 3)单目TUM:.ExamplesMonocularReleasemono_tum .VocabularyORBvoc.txt .ExamplesMonocularTUM1.yaml G: gbd_dataset_freiburg1_desk 4)双目KITTI:.ExamplesStereoReleasestereo_kitti .VocabularyORBvoc.txt .ExamplesStereoKITTI03.yaml G:data_odometry_gray 3 5)双目EuRoC: 6)深度TUM:.ExamplesRGB-DRelease gbd_tum .VocabularyORBvoc.txt ExamplesRGB-DTUM1.yaml G: gbd_dataset_freiburg1_desk G: gbd_dataset_freiburg1_deskassociations.txt |
3.Ubuntu2004系统安装配置(见WSL2)
3.1 初始设置
(1)开户root账号并重启系统: 打开gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 添加greeter-show-manual-login=true 设置密码sudo passwd root (2)登录root账号并更改语言为英语 打开gedit /etc/default/locale修改 LANG="en_US.UTF-8" LANGUAGE="en_US:en" (3)解决root登陆报错: 打开gedit /root/.profile 注释mesg n 添加tty -s && mesg n 回到终端执行init 6 (4)安装vmwaretools 提取iso文件中的压缩文件中的wmware-tools-distrib 进入此目录执行./vmware-install.pl之后一路回车即可 windows共享的目录位于/mnt/hgfs (5)修改源: gedit /etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse #测试版源 deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse #源码 deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse #测试版源 deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse #Canonical 合作伙伴和附加 deb http://archive.canonical.com/ubuntu/ xenial partnerlibe #deb http://extras.ubuntu.com/ubuntu/ xenial main (6)安装基本 add-apt-repository ppa:nemh/systemback apt-get update apt-get upgrade apt-get dist-upgrade apt-get install synaptic gparted systemback fcitx-table-all bleachbit adobe-flashplugin guvcview vlc audacious uget aria2 ubuntu-restricted-extras apt-get install xrdp dconf-editor samba system-config-samba gksu vsftpd filezilla openssh-client openssh-server git git-core apache2 apache2-utils apt-get install minicom picocom cutecom nfs-common portmap nfs-kernel-server 打开LanguageSupport配置KeyboardInputMethodSystem为fcitx 打开bleachbit选中除PackageLists和FreeDiskSpace外的所有 打开rmvb+mkv+mp4+mp3安装提示插件 |
3.2 个性配置
(1)个性配置 桌面无任何图标 输入法仅五笔和拼音 窗口菜单在本窗口并一直显示 任务栏无多余程序停靠(包括不含桌面图标和工作空间图标)且任务栏图标尺寸30 (2)标签配置 打开/etc/xdg/user-dirs.defaults注释所有 打开~/.config/user-dirs.dirs注释只剩下XDG_DESKTOP_DIR="$HOME/Desktop"从而完成位置栏配置 打开菜单栏上的书签栏完成书签栏配置 (3)办公配置 见后文 (4)制本地源 复制/var/cache/apt/archives/*.deb到/root/app/aptget(若软件包被删除或更新则进入synaptic选择全部重新但仅下载) 进行入/root/app执行{dpkg-scanpackages aptget /dev/null | gzip > aptget/Packages.gz}生成源信 打开gedit /etc/apt/sources.list后删除所有并添加deb file:/root/app/ aptget/然后打开synaptic并reload即可 可以通过dpkg -i /root/app/aptget/*.deb安装强制安装deb软件(确保彼此依赖都存在) (5)清理缓存 bleachbit: 清理垃圾 apt-get clean: 清理所有deb安装包 apt-get autoclean: 清理已被卸载的软件的deb安装包 apt-get autoremove: 删除系统认为不再使用的孤立软件 apt-get remove --purge softname: 卸载指定软件且删除配置 synaptic: 清除残留配置 (6)备份系统 用systemback备份系统为LiveCD 直接用LiveCD工作时可能无权限时则执行chmod u+x file/dir 直接进行安装模式..../ubuntu160403-dzy.iso ro finstall quiet splash locale=zh_CN.UTF-8 在不同配置的电脑上安装或试用LiveCD时,驱动有问题首先更新或重装内核(此方法可联网可离线),若都不行则在软件更新界面的附加驱动中安装(此方法要联网) (7)压缩数据
. |
3.3 开发配置
(1)从源安装 apt-get install libqt5multimedia5-plugins qtmultimedia5-dev libsuitesparse-dev CMakeLists添加: /usr/include/suitesparse apt-get install git cmake cmake-qt-gui python3 libqt5*5-dev libboost-all-dev libeigen3-dev liboctomap-dev libdynamicedt3d-dev liboctovis-dev octomap-tools octovis 手动: sophus apt-get install libvtk6-dev libopencv-dev 手动: opencv apt-get install libgflags-dev libgoogle-glog-dev 手动: ceres apt-get install libflann-dev libqhull-dev libpcl-dev pcl-tools libproj-dev (2)手动安装 sophus: 与win相似,直接复制到/usr/include/sophus-dzy opencv: 除安装路径外与win相同, 包括重建本地本可以提供的第三项 pangolin: 除安装路径外与win相同, 但不重建本地已存在的第三项,若所需第三方项不存在会提示错误,基于之前安装这里就需要再安装libglew-dev ceres: 除安装路径外与win相同 qt&&vscode&&vscode-plugins: vscode-icons, CMake, CMake Tools, CMake Tools Helper, C/C++ (3)备份恢复 1)备份:复制/usr/local/*到/root/app/local,复制所有deb包到root/app/base-dev,删除所有out中除out.zip外的文件 2)恢复:以base-dev制作本地源安装,复制local覆盖/usr/local,终端执行ldconfig |
3.4 环境变量配置
(1)可设置处 /etc/environment:系统启动时加载 /etc/profile:每个用户首次登录时加载 /etc/bash.bashrc:每个用户每次打开shell时加载 ~/.profile:对应用户首次登录时加载 ~/.bashrc:对应用户每次打开shell时加载 立即生效:source /etc/bash.bashrc 或source ~/.bashrc (2)设置变量 对C头文件:export C_INCLUDE_PATH = dzypath:${C_INCLUDE_PATH} 对CXX文件:export CPLUS_INCLUDE_PATH = dzypth:${CPLUS_INCLUDE_PATH} 对静态库文件:export LIBRARY_PATH = dzypath: ${LIBRARY_PATH} 对动态库文件:export LD_LIBRARY_PATH = dzypath:${LD_LIBRARY_PATH} 或 修改/etc/ld.so.conf并执行ldconfig 对可执行文件:export PATH = dzypath:${PATH} |
4.移动系统定制
4.1 BIOS与UEFI的硬件差异
1.BIOS硬盘结构 (1)LBA0:因该扇区中,引导代码占有绝大部分的空间,故将此扇区称为MBR扇区 MBR:446字节,存储系统的引导程序 PEs:64字节,每16字节描述描述一个PE(Partition Entry),所以最多共4个分区 End:2字节,值为0xAA55 (2)LBA1~LBA62:隐藏扇区,保留备用。 (3)LBA63:第一分区的起始位置。 (4)LBA64~LBAEnd:参见《挨踢_硬盘结构+文件系统+系统启动+数据恢复1st.doc》
2.UEFI硬盘结构 (1)LBA0:MBR扇区,记录了启动代码和分区信息。 若LBA0记录了仅0xEE标志的分区或LBA0后存在PHs(Partition Headers),说明此硬盘为UEFI独占模式,只能由UEFI主板启动 若LBA0记录了非0xEE标志的分区且LBA0后存在PHs,说明此硬盘为UEFI/BIOS混合模式,两类主板或混合主板都能启动 若LBA0记录了非0xEE标志的分区且LBA0后没有PHs,说明此硬盘为BIOS独占模式,只能由BIOS主板启动 (2)LBA1:主PTH(Partition Table Header),记录硬盘的GUID、分区可用的始末LBA、PEs包含的项数及每项占用的字节数等信息
(3)LBA2~LBA33:主PEs,每个PE用128字节描述
(4)LBA34:第一分区的起始位置 (5)LBA-2~LBA-33:副PEs (6)LBA-1:副PTH |
4.2 BIOS与UEFI的软件差异
1.电脑主板固件程序分别:BIOS和UEFI 2.BIOS分区结构将MBR和PEs存储在了一个扇区LBA0 3.UEFI分区结构将MBR存储在一个扇区LBA0,将PEs存储在多个扇区(LBA2~LBA33),还增加了PTH(存储在LBA1扇区) 4.UEFI必须有一个ESP分区,ESP用于存储系统启动相关的文件 5.BIOS硬盘启动过程概要 (1)开机自检 (2)加载硬盘主引导记录(每类系统的主引导记录都不相同) (3)搜索并激活系统引导文件(如winnt5_ntldr或winnt6_bootmgr或ubuntu_) (4)加载启动配置文件(如winnt5_boot.ini或winnt6_bcd或ubuntu_grub.cfg) (5)加载系统核心文件 6.UEFI硬盘启动流程详细 (1)开机自检 (2)加载系统引导文件:自动加载/esp/efi/boot/bootx64.efi(可由任何系统的efi文件或uefishell.efi重命名得到),可手动添加多个不同路径的efi文件 Windows默认安装在:/esp/efi/microsoft/boot/bootmgrfw.efi Ubuntu默认安装:/esp/efi/ubuntu/shimx64.efi及/esp/efi/ubuntu/grubx64.efi (3)加载启动配置文件:不同的efi文件,其指向的启动配置文件不同 Windows操作系统:/esp/efi/microsoft/boot/bootmgrfw.efià/esp/efi/microsoft/boot/bcd Windows安装镜像:/iso/efi/boot/bootx64.efià/iso/efi/microsoft/boot/bcd Ubuntu操作系统:/esp/efi/ubuntu/shimx64.efià/esp/efi/ubuntu/grubx64.efià/esp/efi/ubuntu/grub.cfg Ubuntu安装镜像:/iso/efi/boot/bootx64.efià/iso/efi/boot/grubx64.efià/iso/boot/grub/x86_x64-efi/*及/iso/boot/grub/grub.cfg (4)加载系统核心文件:不同的启动配置文件,其指向的系统核心文件不同 7.UEFI启动盘制作须知 (1)基于《UEFI硬盘启动流程》可知,从操作系统或安装盘复制相应的文件到esp分区后,此硬盘就是UEFI启动盘 (2)为使用grub2的附加功能,将Ubuntu操作系统中的boot/grub/x86_x64-efi目录也复制到/esp/efi/ubuntu目录中(若复制到其它位置则insmod时就需要指定模块详细路径) (3)为引导镜像(如.iso或.ima或.wim等),复制ubuntu操作系统中的/usr/lib/syslinux/memdisk到/esp/efi/ubuntu中(可复制到其它任何位置反正加载时都要指定具体位置) (4)开发者希望开机启动uefishell.efi,使用者角度希望开机启动grub2,折中方案是将shimx64.efi复制重合名为bootx64.efi(即将grub2设置默认),因为可以从grub2中启动任何efi ▲:暂没实现grub2启动winpe.iso。当前,grub2只负责启动ubuntu系统和ubuntu镜像及efi文件,BCD负责启动windows及winpe.wim及winos.vhd 8.UEFI与BIOS相互转换 (0)BIOS启动盘制作:用grub4dos作为主干(即用grub4dos的引导代码作为硬盘的MBR)引导相关操作系统,详细制作流程略。 (1)BIOS转换为UEFI:不论bios硬盘如何分区及有多少个分区 MBR(001~446):被置0 DPT1(447~462):被修改为恒定值且分类类型被置为0xEE 0x00, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, DPT2(463~478):被置0 DPT3(479~494):被置0 DPT4(495~410):被置0 END(411~412):不变。 (2)UEFI转换为BIOS:不论uefi硬盘如何分区及有多少个分区 MBR(001~446):被修改为某系统的引导代码 DPT1(447~462):被修改为第一分区的信息数据,若无第一分区则置为0 DPT2(463~478):被修改为第二分区的信息数据,若无第二分区则置为0 DPT3(479~494):被修改为第三分区的信息数据,若无第三分区则置为0 DPT4(495~410):被修改为第四分区的信息数据,若无第四分区则置为0 END(411~412):不变。uefi模式的第五及之后的分区在bios将不能被识别,或某些分区软件直接提示不能转换为bios硬盘。 |
4.3 BIOSWinPE启动盘制作
1.WinPE.ISO目录(仿照安装镜像生成):打开从Windows安装镜像并删除所有文件后添加如下文件 bootmgr 从WindowsNT6安装镜像中获取(使bios主板能启动) bootmgr.efi 从WindowsNT6安装镜像中获取(使uefi主板能启动) boot 新建目录 boot.sdi 从WindowsNT6安装镜像中获取 winpe.wim 从第三方获取 (本质上就是windowsNT6安装镜像中install.win的精简) BCD 从WindowsNT6安装镜像中获取并作修改:设备文件由sourcesinstall.wim改为ootwinpe.wim 2.BCD启动WinPE.wim:打开BCD增加一项并指定boot.sdi和winpe.wim路径即可 3.BCD启动WinPE.iso:不支持 4.grub4dos启动WinPE.wim:不支持 5.grub4dos启动WinPE.iso title winpe.iso map --mem /hitsz/iso/winpe.iso (hd32) map --e820cycles=0 ###解决蓝屏问题 map --hook chainloader (hd32) ###grub4dos不支持uefi启动,据说开发团队也不打算支持,所以抛弃grub4dos而转向grub2 |