一、前言

  关于定制化centos7.5的镜像真的是历经波折,前前后后、来来回回尝试了不少于20次,上网找了各种关于定制7系统的方法,都没有成功。。。

  但最终功夫不负有心人终于解决了,O(∩_∩)O哈哈~

二、关于报错

  按照之前制作6.9的定制系统的步骤,总是有一部出错,出现如下错误,并且总是卡到安装filesystem:

  aaarticlea/png;base64,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nHs81jrv+rh2veauVzozu9Y863VGs2ytuevj2vXazfQA7rHhIVW/3Lp2WbXWzmVjrbnr43qmj491Xtcj036v6vz4WOe7TLvRZ491PmZr8riuulPLztY8rrXr+myt+WwfuZnZLMtnsm6dZTNmzurW0cxszLp+jWyf5tlcJs7rXl1r5vpuRtdVPptVXcxc35ndn3UjH132WOdn+irLcs3GemTZY52P2azqvJFnj916dmZPp3lca7cmc6q57oyuX7iZkY08e6zzM2vtsqzqRhbFPtLezVcz2int164163oAr7HhIcVfZv3FHmvH7de1di6La53Vfu1aO5d1672q88djZ8zrHqVdXGuXZWvyuK66U8vO1rxbRzOzLou6fnBzs3sX1X4n26frLJvV7dU+W0fZrIp7lJuvZPs0z+acbq+uNXN9N6PrKp/JxjrqZse6s2Z/1mke1+Ox4/ZmsjmXa1attcuyGdk+zeO66rLMzVT5MLuvWzvVzOiias51i6295nE9Hjtr9o8uy7bkw+gj7eK8ivvcrPZxZnbtZHsAlGx4SNUvu3aOzsS1di5zM9Ge3nWauZlTqs6ffe6tZ7gum5/N47rqTi07W3M3N7Isz9ZZFnX94OZm9y627tcZt8dla4z97gzN47rq3Fp1/RrZWZpnc063V9earX3s1lXeZdqvXXfW7M+6LXuGrh+yOZdr5maqrprPVHvWdG52y4yTzWju5kamufZdns113WLr3q3doDNxrd2abEvXrZ0x42Y127vOjLmZWeCJs+Eh6S91XGvn6Exca+eybKbqo6p3nWZuxpmdU9W+2TO3nuG6bH42j+uqU1U3I9uveTbnum6dZVHXD25udu9i636dcXtctsXM2XFddW6tun6N7CzNszmn26trzdY+dusq7zLt1647a/Zn3ZY9Q9cP2ZzLNXMzVVfNO9181WvnZrsZXWeyOc2zuaqbzbO5rltk/dZ9XTfoTFxr5zI3E1W9dt3aiTM6f+p1Z+088ATZ8JD0FzqutXNZtdbOZWvXqupdp5mbcWbnVLXPdV2mva4j12Xzs3lcV52quhnZfs3jWruu13WWRV0/uLnZLMtnsm6tmeszblazal11bq1Z16+R7dM8m3O6vbrWbDzOuDN0XeVdpv3adWfN/qxbuydmXe+y7LGbzWaqrppXM7PVjHZutprRrpLNah7X2s1k2WO3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" alt="" />

  真的是很让人无语。

三、制作步骤

# mkdir /data/OS
# rsync -a --exclude=Packages/ --exclude=repodata/ /mnt/cdrom/ /data/OS/

  这里需要注意:如果没有拷贝.discinfo文件,将导致使用定制后的ISO安装系统时,在初始化过程中提示找不到光盘!

  之后拷贝已安装的软件包:

# mkdir -p /data/OS/Packages
# vim /root/copy-rpms.sh 内容如下:
#!/bin/bash
rpm -qa > package-list.txt
old_rpms='/mnt/cdrom/Packages'
new_rpms='/data/OS/Packages'
while read line; do
cp ${old_rpms}/${line}*.rpm ${new_rpms} || echo "${line} not exist..."
done < package-list.txt
rm -f package-list.txt # bash /root/copy-rpms.sh

下面在isolinux目录中文件中创建ks.cfg

# Kickstart file automatically generated by anaconda.
# version=DEVEL #-------------------------------------------------------------------------------
# Command section --- must include the required options.
#------------------------------------------------------------------------------- # Text mode or graphical mode?
text
firstboot --disable # Install or upgrade?
install # Use CDROM installation media
cdrom # Network information
# network --onboot yes --device eth0 --bootproto dhcp --noipv6
# network --hostname=localhost.localdomain # System authorization information
auth --enableshadow --passalgo=sha512 # Root password
rootpw --iscrypted $6$tbGvXZz7E2ZHKiFw$krdZKp7WUY4iNierOFh4ZbV1FhroTuomNr71.0Ns52xARVrfr39DnU64sHqZv/K2iWUvMw0cI6DO64VgQWYRg0 # System services,禁用chronyd,防止与ntpd冲突
services --disabled="chronyd" # System timezone
timezone Asia/Shanghai # Keyboard layouts
keyboard --vckeymap=us --xlayouts='us' # System language
lang en_US.UTF-8 # Firewall configuration
firewall --disabled # SELinux configuration
selinux --disabled # Installation logging level
logging --level=info # Reboot after installation
reboot #-------------------------------------------------------------------------------
# The %pre sections
#-------------------------------------------------------------------------------
%include /tmp/part-include
%pre
#!/bin/sh #-------------------------------------------------------------------------------
# 非超微4U4Node机型时,设置系统盘标示符: 如果只有一个磁盘,则不论磁盘大小多大;
# 如果有多个磁盘,则按自定义的规则选择系统安装盘
#-------------------------------------------------------------------------------
function get_osdisk() {
disk_count=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | wc -l)
if [ ${disk_count} -eq 1 ]; then
osdisk=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | cut -d: -f1 | cut -d/ -f3)
else
osdisk=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | awk '{if ($3 >=50 && $3 < 2000) print $0}' | cut -d: -f1 | cut -d/ -f3)
fi
} #-------------------------------------------------------------------------------
# 设置swap大小,如果内存mem<=2G,则swap设置为与物理内存大小一样;
# 如果内存2G<mem<=16G,swap=8G; 如果内存mem>16G,则swap=16G
# 注意:/proc/meminfo中单位是kb,而kickstart中指定swap大小时单位是mb
#-------------------------------------------------------------------------------
function get_swap() {
act_mem=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
if [ ${act_mem} -le $((2*1024*1024)) ]; then
swap_size=$((2*1024))
elif [ ${act_mem} -gt $((2*1024*1024)) ] && [ ${act_mem} -le $((16*1024*1024)) ]; then
swap_size=$((8*1024))
else
swap_size=$((16*1024))
fi
} #-------------------------------------------------------------------------------
# 如果是超微4U4Node机型,使用了主板自带的BIOS RAID set
# 假设创建RAID 1的名称为Volume0,则它的磁盘标示符为Volume0_0,是/dev/md126的软连接
# 如果不是超微4U4Node机型,且有SATA或SCSI磁盘,则不论是否还有IDE磁盘,都使用sdx;
# 如果仅有IDE磁盘,则使用hdx
#-------------------------------------------------------------------------------
if $(grep -q 'md.*$' /proc/partitions); then
osdisk="Volume0_0"
get_swap # 调用函数
elif $(grep -q 'sd.*$' /proc/partitions); then
osdisk_prefix='sd'
get_osdisk # 调用函数
get_swap # 调用函数
elif $(grep -q 'hd.*$' /proc/partitions); then
osdisk_prefix='hd'
get_osdisk # 调用函数
get_swap # 调用函数
else
print "Lost disks, please install disks first!"
exit 1
fi #-------------------------------------------------------------------------------
# 生成/tmp/part-include临时文件
#-------------------------------------------------------------------------------
cat >> /tmp/part-include << EOF
# System bootloader configuration
bootloader --location=mbr --boot-drive=${osdisk}
# Partition clearing information
clearpart --all --initlabel
# Clear the Master Boot Record
zerombr
# Disk partitioning information
part biosboot --fstype="biosboot" --ondisk=${osdisk} --size=1 # 当磁盘大于2T时,以BIOS方式安装CentOS到GPT分区表的磁盘,需要创建1MB的biosboot分区
part /boot --fstype="xfs" --ondisk=${osdisk} --size=500
part /boot/efi --fstype="xfs" --ondisk=${osdisk} --size=500
part pv.01 --fstype="lvmpv" --ondisk=${osdisk} --size=1 --grow
volgroup centos --pesize=4096 pv.01
logvol swap --fstype="swap" --size=${swap_size} --name=swap --vgname=centos
logvol / --fstype="xfs" --grow --maxsize=102400 --size=1024 --name=root --vgname=centos
EOF %end #-------------------------------------------------------------------------------
# The %packages section
#-------------------------------------------------------------------------------
%packages
@^developer-workstation-environment
@additional-devel
@base
@compat-libraries
@core
@debugging
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-apps
@gnome-desktop
@guest-desktop-agents
@input-methods
@internet-applications
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@performance
@perl-runtime
@print-client
@ruby-runtime
@virtualization-client
@virtualization-hypervisor
@virtualization-tools
@web-server
@x11
kexec-tools %end # 启用kdump
%addon com_redhat_kdump --enable --reserve-mb='auto' %end #-------------------------------------------------------------------------------
# The %post sections
#-------------------------------------------------------------------------------
%post
#!/bin/sh
# 设置Bash Color
echo 'PS1="\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]"' >> /root/.bashrc
. /root/.bashrc %end

  下面是有一定更改后的ks文件:

# Kickstart file automatically generated by anaconda.
# version=DEVEL #-------------------------------------------------------------------------------
# Command section --- must include the required options.
#------------------------------------------------------------------------------- # Text mode or graphical mode?
text
firstboot --disable # Install or upgrade?
install # Use CDROM installation media
cdrom # Network information
# network --onboot yes --device eth0 --bootproto dhcp --noipv6
# network --hostname=localhost.localdomain # System authorization information
auth --enableshadow --passalgo=sha512 # Root password
rootpw --iscrypted $1$n5Jfcfwa$//2gZpFMJypdiXEF8ld6O. # System services,禁用chronyd,防止与ntpd冲突
services --disabled="chronyd" # System timezone
timezone Asia/Shanghai # Keyboard layouts
keyboard --vckeymap=us --xlayouts='us' # System language
lang en_US.UTF-8 # Firewall configuration
firewall --disabled # SELinux configuration
selinux --disabled # Installation logging level
logging --level=info # Reboot after installation
reboot #-------------------------------------------------------------------------------
# The %pre sections
#-------------------------------------------------------------------------------
%include /tmp/part-include
%pre
#!/bin/sh #-------------------------------------------------------------------------------
# 非超微4U4Node机型时,设置系统盘标示符: 如果只有一个磁盘,则不论磁盘大小多大;
# 如果有多个磁盘,则按自定义的规则选择系统安装盘
#-------------------------------------------------------------------------------
function get_osdisk() {
disk_count=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | wc -l)
if [ ${disk_count} -eq 1 ]; then
osdisk=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | cut -d: -f1 | cut -d/ -f3)
else
osdisk=$(fdisk -l | grep "Disk /dev/${osdisk_prefix}" | awk '{if ($3 >=50 && $3 < 2000) print $0}' | cut -d: -f1 | cut -d/ -f3)
fi
} #-------------------------------------------------------------------------------
# 设置swap大小,如果内存mem<=2G,则swap设置为与物理内存大小一样;
# 如果内存2G<mem<=16G,swap=8G; 如果内存mem>16G,则swap=16G
# 注意:/proc/meminfo中单位是kb,而kickstart中指定swap大小时单位是mb
#-------------------------------------------------------------------------------
function get_swap() {
act_mem=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
if [ ${act_mem} -le $((2*1024*1024)) ]; then
swap_size=$((2*1024))
elif [ ${act_mem} -gt $((2*1024*1024)) ] && [ ${act_mem} -le $((16*1024*1024)) ]; then
swap_size=$((8*1024))
else
swap_size=$((16*1024))
fi
} #-------------------------------------------------------------------------------
# 如果是超微4U4Node机型,使用了主板自带的BIOS RAID set
# 假设创建RAID 1的名称为Volume0,则它的磁盘标示符为Volume0_0,是/dev/md126的软连接
# 如果不是超微4U4Node机型,且有SATA或SCSI磁盘,则不论是否还有IDE磁盘,都使用sdx;
# 如果仅有IDE磁盘,则使用hdx
#-------------------------------------------------------------------------------
if $(grep -q 'md.*$' /proc/partitions); then
osdisk="Volume0_0"
get_swap # 调用函数
elif $(grep -q 'sd.*$' /proc/partitions); then
osdisk_prefix='sd'
get_osdisk # 调用函数
get_swap # 调用函数
elif $(grep -q 'hd.*$' /proc/partitions); then
osdisk_prefix='hd'
get_osdisk # 调用函数
get_swap # 调用函数
else
print "Lost disks, please install disks first!"
exit 1
fi #-------------------------------------------------------------------------------
# 生成/tmp/part-include临时文件
#-------------------------------------------------------------------------------
cat >> /tmp/part-include << EOF
# System bootloader configuration
bootloader --location=mbr --boot-drive=${osdisk}
# Partition clearing information
clearpart --all --initlabel
# Clear the Master Boot Record
zerombr
# Disk partitioning information
part biosboot --fstype="biosboot" --ondisk=${osdisk} --size=1 # 当磁盘大于2T时,以BIOS方式安装CentOS到GPT分区表的磁盘,需要创建1MB的biosboot分区
part /boot --fstype="ext4" --ondisk=${osdisk} --size=1024
part /boot/efi --fstype="ext4" --ondisk=${osdisk} --size=1024
part / --fstype="ext4" --ondisk=${osdisk} --size=1 --grow
part swap --fstype="swap" --size=${swap_size}
EOF %end #-------------------------------------------------------------------------------
# The %packages section
#-------------------------------------------------------------------------------
%packages
@^developer-workstation-environment
@additional-devel
@base
@compat-libraries
@core
@debugging
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-apps
@gnome-desktop
@guest-desktop-agents
@input-methods
@internet-applications
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@performance
@perl-runtime
@print-client
@ruby-runtime
@virtualization-client
@virtualization-hypervisor
@virtualization-tools
@web-server
@x11
kexec-tools %end # 启用kdump
%addon com_redhat_kdump --enable --reserve-mb='auto' %end #-------------------------------------------------------------------------------
# The %post sections
#-------------------------------------------------------------------------------
%post --nochroot --log=/mnt/sysimage/root/postinstall_stage1.log
mkdir -p /mnt/source
mount -o loop /dev/cdrom /mnt/source
cp /mnt/source/software/netgainagent_v3.tar.gz /mnt/sysimage/usr/
#cp /mnt/source/software/netgainagent_v4.tar.gz /mnt/sysimage/usr/
cp /mnt/source/software/openssh-7.7p1.tar.gz /mnt/sysimage/usr/local
cp /mnt/source/software/openssl-1.0.1t.tar.gz /mnt/sysimage/usr/local
cp /mnt/source/software1/ftp-0.17-67.el7.x86_64.rpm /mnt/sysimage/tmp/
umount -f /mnt/source
%end
%post --log=/root/postinstall_stage2.log
#agent
cd /usr
tar zxvf netgainagent_v3.tar.gz
echo "==>Uncompress netgainagent ok!\n" >> /root/postinstall_stage2.log
#ftp libstdc++
rpm -ivh /tmp/ftp-0.17-67.el7.x86_64.rpm
#openssl and openssh
#set /etc/resolv.conf
cat > /etc/resolv.conf << EOF
nameserver 218.241.99.50
nameserver 218.241.118.144
EOF
echo "==>Set OS DNS ok!\n" >> /root/postinstall_stage2.log
#ntp
cat >> /var/spool/cron/root << EOF
*/3 * * * * /usr/sbin/ntpdate ntp.cnnic.cn && /sbin/hwclock -w
# */3 * * * * /usr/sbin/ntpdate 10.10.1.12 && /sbin/hwclock -w
# */3 * * * * /usr/sbin/ntpdate 10.20.2.53 && /sbin/hwclock -w
EOF
echo "==>Set OS NTP ok!\n" >> /root/postinstall_stage2.log
#delete tar.gz file
rm -rf /usr/netgainagent_v3.tar.gz
#erase firewalld
yum erase firewalld -y
yum erase dnsmasq -y
yum erase cups -y
yum erase postfix -y
#history size
cat >> /etc/bashrc <<EOF
HISTSIZE=2000
HISTFILESIZE=2000
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
EOF
#!/bin/sh
# 设置Bash Color
echo 'PS1="\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]"' >> /root/.bashrc
. /root/.bashrc %end

  注意:kickstart文件的 %pre%post 前后不能有空格,否则会报错 Unable to open input kickstart file

 之后提供启动菜单,在这里我终于明白了为何之前我制作的镜像在虚拟机挂在和光盘安装都是 好的,但刻录在U盘安装时候就会报错的原因了

  • inst.ks=hd:LABEL=CentOS7:/isolinux/ks.cfg ,通过LABEL指定 kickstart 文件位置的方式,制作的ISO文件可以用于U盘启动(注意别少冒号)
  • inst.ks=cdrom:/isolinux/ks.cfg,这种指定 kickstart 文件位置的方式,制作的ISO文件只能用虚拟机挂载安装或者刻录成光盘安装,无法制作成U盘安装,因为U盘安装时,U盘不是光盘而被当作一个磁盘
    label Install CentOS 7.5 BasicWebServer with Kickstart
    menu label ^Install CentOS 7.5 BasicWebServer with Kickstart
    menu default
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 inst.ks=hd:LABEL=CentOS7:/isolinux/ks.cfg

    这是在isolinux.cfg中添加的内容

    之后重新生成repodata目录及其中的文件

# yum -y install createrepo
# mkdir /tmp/iso/repodata
# cp /mnt/cdrom/repodata/*-comps.xml /data/OS/repodata/comps.xml
# cd /tmp/iso
# createrepo -g /tmp/iso/repodata/comps.xml /data/OS

  编辑了comps.xml,要重新生成新的,因为comps.xml的sha值会改变,这样就会导致跟repomd.xml中所记录的不同,否则安装的时候会报错An error occurred umounting the CD. Please make sure you’are not accessing /mnt/source from the shell on tty2 an the click OK retry

至此,comps.xml文件和其他相关联的文件已被重新生成到repodata目录下。

  生成新的ISO镜像,并嵌入MD5值

genisoimage -o /data/CentOS-7.5-AutoInstall.iso -R -J -T -V CentOS7 -v -cache-inodes -joliet-long -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot /data/OS/
implantisomd5 /data/CentOS-7.5-AutoInstall.iso

  这样就生成了iso文件,可以拷贝出来进行安装系统了,但最后需要手工进行接收使用centos7条款协议,参照英文提示输入相应的英文或数字进行接收即可。

参考文章:

http://www.madmalls.com/blog/post/customize-centos-7-3-autoinstall-iso/

Centos7.5的定制化安装的更多相关文章

  1. CentOS7.5 系统最小化安装与初始化配置

    CentOS7.5 系统最小化安装与初始化配置 1.安装标准化的系统 1.1.系统安装期间的语言 选择:中文-简体中文,安装完成也会默认支持中文输出,便于管理 1.2.时区选择 亚洲上海,CST时区( ...

  2. 基于Centos6.x定制化安装步骤

    1.获取安装界面代码      挂载image/install.img:mount image/install.img /mnt/5 -o loop      复制挂载后的代码至self_intall ...

  3. CentOS7 minimal(最小化安装)后增加的软件安装

    1.net-tools 安装,因为习惯使用ifconfig命令 2.wget安装,下载工具必不可少 3.vim安装,相比于vi个人更喜欢vim 4.yum-plugin-priorities安装,用于 ...

  4. 基于Centos7.2使用Cobbler工具定制化批量安装Centos7.2系统

    1.1    定制Centos_7_x86_64.ks文件内容 # Cobbler for Kickstart Configurator for CentOS 7.2.1511 by Wolf_Dre ...

  5. 最小化安装CentOS7 + xfce4 +PHP + nginx +mariadb 开发环境

    虚拟机自定义最小化安装,新增用户做为管理员,打开自动获取网络,桥接模式.所有的操作只有命令,不做解释,看不明白的可以自行搜索相关的资料. # 开头的行是注释行,# 开头的空行,我自己装机时做了快照.未 ...

  6. centos7 最小化安装后的配置优化

    echo #CENTOS7echo #1.最小化安装之后需要做的事echo 2.配置echo 2.1 安装网络yum install net-tools -y echo 2.2 更新机器名echo h ...

  7. 自动化部署必备技能—定制化RPM包[转载]

    回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...

  8. 自动化部署必备技能—定制化RPM包

    回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...

  9. 006-(成功环境记录)基于Centos7系统部署cobbler批量安装系统

    1.1 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使 ...

随机推荐

  1. PHP面向对象深入研究之【对象生成】

    对象 看个例子 <?php abstract class Employee { // 雇员 protected $name; function __construct( $name ) { $t ...

  2. 微信企业号支付个人php实现

    导语:分销商,微商提现怎么提? 直接用微信支付. 实现如下: 微信支付配置 /*微信支付*/ 'PAY_WEIXIN' => array( 'appid' => 'XXXX', 'apps ...

  3. log4net 使用总结- (1)在ASP.NET MVC 中使用

    1. 去官网下载log4net.dll,增加引用到站点下(你也可以通过nuget 安装) http://logging.apache.org/log4net/download_log4net.cgi ...

  4. Linux - 用户的增删改查及组的相关操作

    useradd:新增一个用户 useradd 几个常用的参数: -u:指定用户的 uid -g:指定用户所属的组 -d:指定用户的家目录 -c:指定用户的备注信息 -s:指定用户所用的 shell [ ...

  5. python's twenty-seventh day for me 模

    time模块: 1,计算执行代码的时间 time.time() 2,让程序停这里一段时间 time.sleep(时间(s)) 时间戳时间: import time print(time.time()) ...

  6. HALCON 算子函数(四) File

    HALCON 算子函数——Chapter 4 : File 4.1 Images 1. read_image 功能:读取有不同文件格式的图像. 2. read_sequence 功能:读取图像. 3. ...

  7. leetcode872

    class Solution { public: vector<int> v1; vector<int> v2; void GetLeaf(TreeNode* tree, in ...

  8. 模拟linux的内存分配与回收

    模拟linux的内存分配与回收 要求 通过深入理解内存分配管理的三种算法,定义相应的数据结构,编写具体代码. 充分模拟三种算法的实现过程,并通过对比,分析三种算法的优劣. (1)掌握内存分配FF,BF ...

  9. 思考ASP.NET网站静态化的利与弊

    最近在思考网站要不要进行静态化的问题,在网上收集和整理了有关静态化利与弊的资料,于是写下此博文分享到网络上.由于本人是一名asp.net开发人员,所以本文的观点可能无法涉及到全部方面,但是比较注重于使 ...

  10. 中国大学MOOC 设置AutoCAD的绘图环境