{ จันทร์ ๖ กันยาน ๒๕๕๓ }

  การอัพเกรดเฟิร์มแวร์ของ WRT54G เพื่อทำเป็น APRS4R  
(เรียกว่าส่วนของ Software)
  (ขั้นตอนทั้งหมดห้ามทำผ่านไวร์เลสโดยเด็ดขาด)  

เอามาจาก http://www.100watts.com/smf/index.php?topic=46040.0 เขียนโดย E20GMY

-------------------------------------------------------------------------------------------------------------------------------------------------------
คำเตือน การกระทำต่อไปนี้จะทำให้ข้อมูลเฟิร์มแวร์เดิม ๆ ในตัว Linksys WRT54GL
สูญหายทั้งหมด และยังผิดเงื่อนไขการรับประกันกับทางร้านผู้ขายอีกด้วย
-------------------------------------------------------------------------------------------------------------------------------------------------------

ลองมาดูวิธีการปลุกชีพ ของเจ้าตัว WRT54GL กัน สำหรับคนที่ทำผิดพลาดและไม่สามารถ login เข้าไปที่ WRT54GL ได้

 1. ทำการล้างความจำกันก่อน โดยหาโลหะปลายแหลมช็อตระหว่างขา 15-16 ของตัว ROM จิ้มไว้จนกว่าจะ ping ติดแล้วจึงปลดช็อต (ดูที่ขั้นตอนที่ 5)
        ถ้ารุ่น WRT54G v4  ให้ช๊อตขา 15 กับ 16
        ถ้ารุ่น WRT54GL v1.1 ช๊อตขา 16 กับ 17



 2. ดาวน์โหลด ไฟล์เฟิร์มแวร์ openwrt-wrt54g-2.4-squashfs.bin มาเก็บไว้บนเครื่อง
http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/openwrt-wrt54g-2.4-squashfs.bin 
( ถ้าดาวน์โหลดไม่ได้ ผมมีสำรองอยู่ที่ http://www.hs9dmc.com/APRS4R/openwrt-wrt54g-2.4-squashfs.bin ขนาด 1.75 MB )

 3. เปิด Dos command prompt แล้วพิมพ์คำสั่ง ping -t 192.168.1.1  เปิดทิ้งไว้เลย



 4. เปิดโปรแกรม tftp ของ linksys แล้วเลือก FW ที่ดาวน์โหลดไว้ตอนขั้นตอนที่ 2 มารอไว้เลย
โหลดได้ที่ http://www.redrocknet.com/downloads/Linksys%20TFTP/Tftp.exe  
( ถ้าดาวน์โหลดไม่ได้ ผมมีสำรองอยู่ที่ http://www.hs9dmc.com/APRS4R/Tftp.exe ขนาด 36 KB )



 5. จากนั้นให้เสียบสาย power และรอจน ping มีการตอบกลับมา ปลดช็อตที่ขา 16-17 แล้ว กด upgrade ที่โปรแกรม tftp โปรแกรมก็จะทำการโปรแกรม firmware ตัวใหม่ให้เป็นที่เรียบร้อย

ปล. เท่าที่ลองมาต้องให้เลขตัวหลังมันเป็น TTL=100 ถึงจะยิง FW เข้านะครับ ถ้าเป็น 64 ยิงไม่เข้า มันจะโผล่มาประมาณ 3-5 วินาทีหลังจากเสียบสาย power ครับ

Pinging 192.168.1.1 with 32 bytes of data:

Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100

 6. หลังจากอัพเฟิร์มแวร์ตัวใหม่เรียบร้อย การตอบกลับการ ping ก็จะหายไปประมาณ 5-10 วินาที จากนั้นผลการ ping ก็จะกลับมาเป็น 64 เหมือนเดิม

Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64


 

 7. ใช้ dos command ทำการ telnet 192.168.1.1 เข้าสู่หน้าจอ OS ตัวที่เราเพิ่ง upgrade

พิมท์ passwd เพื่อทำการเปลี่ยน password (ระบบจะให้ป้อนพาสเวิร์ดสองครั้งเหมือนกัน)

(หลังจากเปลี่ยน password แล้วจะเข้าใช้งานด้วย telnet ไม่ได้อีกต่อไป แต่เรายังสามารถใช้โปรแกรมพวก ssh เข้าไปคอนฟิกค่าได้เหมือนเดิม โดยใช้ Protocal ssh2 ผ่านทาง port 22)

จากนั้นก็ดำเนินการติดตั้ง aprs4r ต่อไป


ข้างล่างนี้เอามาจาก http://www.100watts.com/smf/index.php?topic=5774.msg145553#msg145553 เขียนโดย E20EHQ

การลงโปรแกรม (ตามที่ได้กล่าวมาตามข้างบน)
    - นำ WRT54G มาทำการลง OpenWRT โดยเลือก Download ให้ถูกต้องกับรุ่นของ Router ที่มี หรือ Chipset ของ Router ตัวนั้นๆ
    - ทำการ Telnet เข้าไปที่ IP 192.168.1.1 เพื่อเข้าไป เปลี่ยนรหัสผ่านตามที่ท่านต้องการ
    - ใช้ SSH เข้าไปที่ IP 192.168.1.1 เพื่อเข้าสู่การติดตั้ง APRS4R

อันนี้ผมเขียนเพิ่มเติมเองนอกเหนือจากเวบที่อ้างอิง

การต่อสายอินเตอร์เน็ตเข้าตัว WRT54GL ทำได้สองวิธีครับ
วิธีที่ 1
(กรณีที่ใช้เน็ตแบบ adsl และที่ตัว router จ่ายเลข IP วง 192.168.1.xx ออกมาให้แล้ว) [ดูภาพประกอบ]
() เอา PC เครื่องที่จะทำการคอนฟิกตัว WRT54GL ต่อเข้าทางช่อง LAN ช่องใดช่องหนึ่งใน 4 ช่อง แล้วเครื่อง PC ก็จะได้รับเลข IP มาจากตัว WRT 54GL (ควรจะได้รับเลข 192.168.1.xx) โดยยังไม่ต้องต่อ WRT54GL เข้ากับระบบอินเตอร์เน็ต
(
) ใช้โปรแกรมประเภท SSH (โปรแกรม putty หรือ SecureCRT) เข้าไปในเครื่อง WRT54GL แล้วทำการปิด DHCP ของตัว WRT54GL ด้วยคำสั่ง # /etc/init.d/dnsmasq disable (เสร็จแล้วยังไม่ต้องทำการรีสตาร์ท WRT54GL) ถ้าไม่ปิด DHCP ของ WRT54GL เวลาเราต่อตัว WRT54GL เข้ากับระบบเน็ตเวิร์ค มันจะไปแย่งจ่ายเลข IP กับตัว Router ที่ทำหน้าที่จ่ายเลขอยู่ก่อนแล้ว 
() ทำการกำหนดเลข IP ของตัว WRT54GL เสียใหม่ (ของเดิมๆ น่าจะเป็น 192.168.1.1 ให้แก้เป็นเลขอะไรก็ได้ที่ไม่ไปชนกับเลขที่มีใช้งานอยู่แล้วในระบบ เช่นเลข 192.168.1.222 เป็นต้น) แล้วทำการรีสตาร์ทเครื่อง WRT54GL ซักหนึ่งรอบ ด้วยคำสั่ง # reboot
() เอาสายแลนอีกเส้นหนึ่งมาต่อจากช่อง LAN ช่องใดช่องหนี่งของ WRT54GL ที่เหลืออยู่อีก 3 ช่อง เพื่อต่อ WRT54G เข้ากับระบบอินเตอร์เน็ตของเรา (ถ้าที่ ADSL Router มีช่องเหลืออยู่ก็เสียบเข้าไปเลย แต่ถ้าของใครมี Switch/Hub ก็เสียบเข้าไปที่นั่นก็ได เพื่อให้มันสามารถต่อกับอินเตอร์เน็ตได
() ใช้โปรแกรมประเภท SSH (โปรแกรม putty หรือ SecureCRT) เข้าไปในเครื่อง WRT54GL อีกครั้ง แต่คราวนี้เลข IP ของตัว WRT54GL เปลี่ยนไปแล้วนะครับ ฉะนั้นตอน SSH จะต้องกำหนดเลขให้ถูกต้องด้วย ไม่งั้นจะเข้าไปในตัว WRT54GL ไม่ได้เชียว

วิธีที่ 2 (กรณีที่ใช้เน็ตของหน่วยงานที่สลับซับซ้อน หรือกรณีที่
ADSL Router ไม่ได้จ่ายเลข IP ออกมา)
 
วิธีนี้ต้องเข้าใจระบบเน็ตเวิร์คของเรามากหน่อย [ดูภาพประกอบ]
(A) ก่อนอื่นต้องเอาอินเตอร์เน็ตต่อเข้ากับช่อง WAN ของ WRT54G เพื่อให้มันสามารถติดต่อกับอินเตอร์เน็ตได้ก่อน (ข้อระวังคือเลขไอพีของเน็ตที่เข้าทาง wan ต้องไม่ใช้ 192.168.1.x แต่ถ้าทาง WAN เป็นเลข 192.168.1.x อยู่ก่อนแล้วก็จะต้องเปลี่ยนทาง LAN ให้เป็นวงอื่นที่ไม่ใช่ 192.168.1.x) หรืออาจไปกำหนดค่าเลข IP ของ WAN ให้เป็นไปตามระบบที่ใช้งานอยู่ก่อนแล้ว ก็ได้ [คลิ๊กอ่านวิธีเปลี่ยนเลข IP ใน WRT54GL]
(
B) เอาเครื่องคอมพิวเตอร์ที่จะทำการคอนฟิกค่า เสียบเข้าช่อง LAN ของ WRT54G โดยเครื่องคอมฯจะได้รับเลข IP มาจาก WRT54G เป็นเลข 192.168.1.x (เพราะ WRT54G จะทำหน้าที่ dhcp จ่ายเลขไอพีมาให้)



  การติดตั้งโปรแกรม APR4R เพื่อให้เป็น I-Gate  
(ขั้นตอนทั้งหมดห้ามทำผ่านไวร์เลสเด็ดขาด)


(01) ใช้คำสั่ง vi /etc/ipkg.conf แล้วแก้ไข บรรทัดที่ 2 คือ src packages http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel เพราะเดิมที ไม่มี เลข 7.09 (สงสัยพวกพิมพ์ตกไว้)

(02) ใช้คำสั่ง ipkg update แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

== (แซงคิว) ============================================================

การติดตั้ง NTP Client เพื่อให้เวลาของตัว Router ตรงกับเวลามาตรฐาน
(A) ใช้คำสั่ง ipkg install ntpclient แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

root@OpenWrt:~# ipkg install ntpclient 
Installing ntpclient (2003_194-4) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ntpclient_2003_194-4_mipsel.ipk
Configuring ntpclient
Done.
~

(B) ใช้คำสั่ง vi /etc/config/ntpclient เพื่อใส่ค่า Time Server ลงไปแทน (เราใช้ของกรมอุทกศาสตร์กองทัพเรือ time.navy.mi.th เป็นหลัก และของสถาบันมาตรวิทยา time2.nimt.or.th (203.185.69.60) เป็นรอง)

root@OpenWrt:~# vi /etc/config/ntpclient
config ntpclient
option hostname '
time.navy.mi.th
option port '123'
option count '1'

config ntpclient
option hostname '
203.185.69.60'
option port '123'
option count '1'
~

(C) ทำการตั้งเวลาให้ตรงกับ server ดังนี้

root@OpenWrt:~# /usr/sbin/ntpclient -c 1 -s -h time.navy.mi.th
40440 40734.476 89739.0 33.6 181463.2 366.2 0

จากค่าที่ได้ พอจะทราบว่าเวลาของตัว WRT54GL กับเวลามาตรฐาน ต่างกันเยอะมาก
(อันที่จริงเมื่อเราอัพเดทเฟิร์มแวร์ใหม่ ๆ ค่าของเวลาจะอยู่ที่ ปี 2006 โน๊นนนเลย..)

จากนั้นลองตรวจสอบค่าเวลา หลังจากได้ตั้งเวลากับ server แล้วดังนี้

root@OpenWrt:~# date
Tue Sep 21 06:54:04 UTC 2010

(Z) ถ้าท่านคุ้นเคยกับการใช้ pico editor มาก่อนนี้ ก็สามารถติดตั้ง nano editor ได้ด้วยคำสั่ง ipkg install nano (ซึ่งการใช้งาน nano จะเหมือนกับ pico ทุกประการ)

== (จบการแซงคิว) ========================================================

(03) ใช้คำสั่ง ipkg install ruby ruby-core ruby-yaml ruby-cgi แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

root@OpenWrt:~# ipkg install ruby ruby-core ruby-yaml ruby-cgi
Installing ruby (1.8.6-p36-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby_1.8.6-p36-1_mipsel.ipk
Installing libruby (1.8.6-p36-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./libruby_1.8.6-p36-1_mipsel.ipk
Installing ruby-core (1.8.6-p36-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-core_1.8.6-p36-1_mipsel.ipk
Installing ruby-yaml (1.8.6-p36-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-yaml_1.8.6-p36-1_mipsel.ipk
Installing ruby-cgi (1.8.6-p36-1) to root...
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-cgi_1.8.6-p36-1_mipsel.ipk
Configuring libruby
Configuring ruby
Configuring ruby-cgi
Configuring ruby-core
Configuring ruby-yaml
Done.
root@OpenWrt:~# 

(04) ใช้คำสั่ง vi /etc/ipkg.conf แล้วเพิ่มบันทัด src aprs4r http://www.aprs4r.org/openwrt/kamikaze แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

root@OpenWrt:~# vi /etc/ipkg.conf 
src release http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/packages
src packages http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel

src aprs4r http://www.aprs4r.org/openwrt/kamikaze
dest root /
dest ram /tmp

~
root@OpenWrt:~#

(05) ใช้คำสั่ง ipkg update แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

root@OpenWrt:~# ipkg update
Downloading http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/packages/Packages
Updated list of available packages in /usr/lib/ipkg/lists/release
Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/Packages
Updated list of available packages in /usr/lib/ipkg/lists/packages
Downloading http://www.aprs4r.org/openwrt/kamikaze/Packages
Updated list of available packages in /usr/lib/ipkg/lists/aprs4r
Done.
root@OpenWrt:~#

(06) ใช้คำสั่ง ipkg install aprs4r แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง

root@OpenWrt:~# ipkg install aprs4r
Installing aprs4r (1.0.3-2) to root...
Downloading http://www.aprs4r.org/openwrt/kamikaze/aprs4r_1.0.3-2_mipsel.ipk
Installing ruby-serialport (0.6-1) to root...
Downloading http://www.aprs4r.org/openwrt/kamikaze/ruby-serialport_0.6-1_mipsel.ipk
Configuring aprs4r
ls: /etc/aprs4r/*.yaml: No such file or directory
APRS4R disabled (see /etc/default/aprs4r)
APRS4R Watchdog disabled (see /etc/default/aprs4r)
Configuring ruby-serialport
Done.
root@OpenWrt:~#

(07) ใช้คำสั่ง vi /etc/default/aprs4r แล้วใส่ค่านี้ลงไป
        PROFILE=นามเรียกขาน.yaml
        START_DAEMON=true
        TIMEOUT=120
        START_WATCHDOG=true

(08) ใช้คำสั่ง cd /etc/aprs4r

(09) ใช้คำสั่ง wget http://pioneer.netserv.chula.ac.th/~ntinnawa/CALLSIGN.yaml เพื่อเอา File มาแก้ไข config เป็นของผู้ใช้งาน

(10) ใช้คำสั่ง cp CALLSIGN.yaml นามเรียกขาน.yaml 

(11) ใช้คำสั่ง vi นามเรียกขาน.yaml เพื่อตามแก้ตรงที่เป็นตัวอักษรสีน้ำเงิน (แก้ CALLSIGN ให้เป็นนามเรียกขานของผู้ใช้ และ ใส่ค่าพิกัดสถานี (ส่วนตัวอักษรสีชมพู แก้ไขเพิ่มเติม)
โดยแทนที่คำว่า PUT YOUR LOCATION + INFO HERE FOR BEACON )
การใส่ Beacon นั้นจะมีรูปแบบของเขาอยู่ คือ !DDMM.mmN/DDDMM.mmE#PHGxxxx Beacon Text  
(
เช่น !0712.21N/10036.06E&PHG2260 I-Gate Songkhla)  - - - - คลิ๊กอ่านรายละเอียดตรงนี้

--- !ruby/object:APRS4R::APRS4RConfiguration 
version: 
devices: 
device0: !ruby/object:APRS4R::AX25SocketConfiguration 
  name: rf0
  type: AX25Socket
  enable: true
  remote: true
  deprecated: false
  call:
HS9DMC-2
  device: 
  port: 
  baudrate: 
  mode: kiss/tnc2/northlink
  speed: 
  duplicatePeriod: 15
  timeout: 300
parameters: !ruby/object:APRS4R::KISSDeviceConfiguration 
  name: kiss port
  type: KISSDevice
  enable: true
  remote: false
  deprecated: false
  device:
/dev/tts/1
  baudrate: 9600
  port: 
  speed: 1200
  timeout: 300
  txdelay: 
  persistence: 
  slottime: 
  duplex: 
device01: !ruby/object:APRS4R::ISSocketConfiguration 
  name: is0
  type: ISSocket
  enable: true
  remote: true
  deprecated: false
  hosts: 
  - asia.aprs2.net
  - aprs.station.in.th
  port: 14580
  username:
HS9DMC-2
  filter: "# filter p/E2/HS"
  duplicatePeriod: 15
  timeout: 60
plugins: 
digipeater01: !ruby/object:APRS4R::GatewayPluginConfiguration 
  name: is0<->rf0
  type: GatewayPlugin
  enable:
true
  remote:
true
  deprecated: 
  call: HS9DMC-2
  inDevice: rf0
  outDevice: is0
  localOnly: ""
  replacePath: ""
  path: ""
beacon00: !ruby/object:APRS4R::BeaconPluginConfiguration 
  name: is0Beacon
  type: BeaconPlugin
  enable: true
  remote: true
  deprecated: false
  device: is0
  period: 300
  offset: 0
  message: !ruby/object:APRS4R::APRSMessage 
  source:
HS9DMC-2
  destination:
AP4R10
  path: []
  payload: "!
0711.88N/10036.03E&PHG2260 I-Gate Songkhla"
beacon01: !ruby/object:APRS4R::BeaconPluginConfiguration 
  name: rf0Beacon
  type: BeaconPlugin
  enable: true
  remote: true
  deprecated: false
  device:
rf0
  period: 300
  offset: 0
  message: !ruby/object:APRS4R::APRSMessage 
  source:
HS9DMC-2
  destination:
AP4R10
  path: 
  - WIDE2-1
  payload: "!
0711.88N/10036.03E&PHG2260 I-Gate Songkhla"
digipeater00: !ruby/object:APRS4R::GatewayPluginConfiguration 
  name: rf0<->is0
  type: GatewayPlugin
  enable: false
  remote: false
  deprecated: 
  call: HS9DMC-2
  inDevice: is0
  outDevice: rf0
  localOnly: true
  replacePath: true

หากต้องการรายละเอียดของการคอนฟิกไฟล์ callsign.yaml เพื่อการทำความเข้าใจเพิ่มเติม ลองเข้าไปดูที่ http://www.aprs4r.org/cgi-bin/trac.cgi/wiki/APRS4RSoftware 

(12) ใช้คำสั่ง reboot เพื่อให้ Router เริ่มทำงาน

(13) หลังจากรีสตาร์ทแล้ว ให้ใช้ SSH เข้าไปที่ WRT54GL อีกครั้ง แล้วไปดูข้อมูลที่วิ่งเข้า-ออกตัว APRS4R โดยใช้คำสั่ง
       root@OpenWrt:~# tail -f /tmp/log/aprs4r/aprs4r.log

[LOG] 2010-09-21 13:44:13 BeaconPlugin:: sending beacon on device is0: HS9DMC -> APR4R via []: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla)
[LOG] 2010-09-21 13:44:13 SocketSendThread:: message send on is0: HS9DMC -> APR4R via []: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla)
[LOG] 2010-09-21 13:44:14 BeaconPlugin:: sending beacon on device rf0: HS9DMC -> APR4R via [WIDE2-1]: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla)
[LOG] 2010-09-21 13:44:14 SocketSendThread:: message send on rf0: HS9DMC -> APR4R via [WIDE2-1]: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla)
[LOG] 2010-09-21 13:44:49 SocketRecvThread:: message recv on is0: HS9YS-9 -> APU25N via [TCPIP*, QAC, HS9YS]: (@211344z0651.42N/10114.96E>/000/A=000074 javAPRSrvr=qrk5.no-ip.org:14580 {UIV32N})
[LOG] 2010-09-21 13:45:48 SocketRecvThread:: message recv on is0: HS9YS-9 -> APU25N via [TCPIP*, QAC, HS9YS]: (@211345z0651.42N/10114.96E>/000/A=000079 javAPRSrvr=qrk5.no-ip.org:14580 {UIV32N})
[WARN] 2010-09-21 13:45:54 KISSSerialConnection:: readFrame: ex: execution expired
[LOG] 2010-09-21 13:50:53 SocketRecvThread:: message recv on is0: HS9LWR -> AP4R10 via [TCPIP*, QAC, T2THAPR-1]: (>APRS4R 1.0.2 Digi/I-Gate)
[WARN] 2010-09-21 13:51:00 KISSSerialConnection:: readFrame: ex: execution expired
[LOG] 2010-09-21 13:51:04 SocketRecvThread:: message recv on is0: HS9LWR -> AP4R10 via [TCPIP*, QAC, T2THAPR-1]: (<IGATE)
[LOG] 2010-09-21 13:53:14 SocketRecvThread:: message recv on is0: HS8GLR -> APRSTH via [TCPIP*, QAC, T2THAPR-1]: (=0700.37N/10028.20E-PHG239052/hs8glr_9@hotmail.com HATYAI)

ออกจากหน้าจอนี้โดยการกดปุ่ม Ctrl กับปุ่ม

เป็นอันว่าจบกระบวนการทำให้ WRT54GL v1.1 กลายเป็น APRS4R (เขาควาย)

ปล. ท่านควรเข้าใจการใช้ คำสั่ง vi ด้วยครับ (รายละเอียดการใช้ vi อยู่ด้านล่าง ก็คงไม่ยากนักนะครับ)


 ข้างล่างนี้เอามาจาก http://www.webserverthai.com/linux/การใช้งาน-vi-editor/  

 การใช้ vi editor 

การเรียกใช้ vi editor ก็ง่ายๆให้พิมพ์ว่า vi ตามด้วยชื่อไฟล์

เช่น #vi name1.txt

จะเป็นการ edit ไฟล์ name1.txt (ถ้าไม่มีจะสร้างขึ้นใหม่เลย)

โหมดการทำงาน

มี 2 โหมดคือ

1. โหมด command จะ save จะ quit จะค้นหาต้องอยู่ในโหมดนี้

2. โหมดการพิมพ์ เมื่อทำการกด i หรือ a จะเข้าสู่โหมดนี้ ใช้แก้ไขข้อมูลในไฟล์

การสลับระหว่างโหมดให้ใช้ปุ่ม Esc ( คิดอะไรไม่ออกกด Esc ไว้ก่อน )

การกระทำการ (Operator)

เมื่ออยู่ในโหมด command เราสามารถใช้ปุ่มเหล่านี้กระทำการได้

การจัดการเกี่ยวกับไฟล์

เมื่ออยู่ในโหมด command เราสามารถกระทำการเหล่านี้ได้ (ถ้าอยู่ในโหมดการพิมพ์ให้กด Esc ออกมาก่อน)

หวังว่าคงไม่ยากเกินไปนะครับ