วิธีการติดตั้งซอฟต์แวร์เพิ่มเติมบนเราเตอร์ที่บ้านของคุณ (DD-WRT)
คุณเคยต้องการที่จะมีฟังก์ชั่นเพิ่มเติมเช่นอีเมล, Bit-torrent หรือแม้แต่ MySQL โดยตรงบนเราเตอร์ของคุณหรือไม่? บางทีตอนนี้คุณสามารถทำได้ Geek วิธีการดำลงในวิธีการติดตั้งซอฟต์แวร์ Opkg บน DD-WRT.
ภาพโดย Jean Spector และ Aviad Raviv
หากคุณยังไม่ได้ตรวจสอบและตรวจสอบบทความก่อนหน้าในซีรีส์:
- เปลี่ยนเราท์เตอร์ภายในบ้านของคุณให้เป็นเราเตอร์ที่ทรงพลังด้วย DD-WRT
- วิธีลบโฆษณาด้วย Pixelserv บน DD-WRT
สมมติว่าคุณคุ้นเคยกับหัวข้อเหล่านั้นอ่านต่อไป โปรดทราบว่าคู่มือนี้เป็นเทคนิคเล็กน้อยและผู้เริ่มต้นควรระวังเมื่อทำการปรับเปลี่ยนเราเตอร์.
ความยากลำบาก
ฉันเพิ่งซื้อ Buffalo WZR-HP-AG300H ใหม่ซึ่งมาพร้อมกับ DD-WRT รุ่นใหม่ เนื่องจากเราเตอร์นี้มีพอร์ต USB ฉันจึงเชื่อมต่อ HD ทันทีและพยายามใช้คำแนะนำ wiki“ Optware, The Right Way” น่าเสียดายที่ฉันพบว่าเราเตอร์ที่ฉันได้รับเป็นไปตาม Atheros และสคริปต์จากหน้า wiki นั้นไม่สนับสนุน ดังนั้นฉันจึงเริ่มขุด (เหมือนที่เคยทำ) และเจอหลายแนวทาง (1, 2, 3 และ 4) ที่มีวัตถุประสงค์เพื่ออธิบายวิธีการทำงานของ Opkg ด้วยตนเอง ในขณะที่การมีส่วนร่วมของพวกเขา (ท่ามกลางแหล่งข้อมูลอื่น ๆ บนเว็บ) ในคู่มือนี้มีค่าสูง แต่คำแนะนำบางอย่างคือ (IMHO) เพียงไม่ได้ส่งต่อตรงไปตรงมามากพอ ตัวอย่างเช่นให้ไฟล์ "lib" แก่คุณ แต่อย่าสอนวิธีตกปลาจากแหล่งที่มา ต้องใช้ประโยชน์จากฟอร์แมต Linux ในฟอร์แมต HD หรืออย่างน้อยหนึ่งพาร์ติชั่น (ซึ่งจริงๆแล้วไม่สามารถใช้กับเฟิร์มแวร์ที่ฉันทดสอบด้วย) นั่นคือเหตุผลที่ฉันรู้สึกว่าจำเป็นต้องสร้างขั้นตอนด้านล่างที่กระชับง่ายต่อการติดตามและทำซ้ำเพื่อให้ผู้จัดการแพ็คเกจ OpenWRT Opkg ทำงานกับเราเตอร์ดังกล่าว.
อัปเดต: ความสามารถในการติดตั้งพาร์ติชั่นได้รับการแนะนำให้รู้จักกับเวอร์ชั่นใหม่ของแบรนด์ในรุ่น 17798 alpha build.
Opkg คืออะไร?
Opkg เป็นผู้จัดการบรรจุภัณฑ์เช่น apt / aptitude และ yum มันทำหน้าที่แทนตัวจัดการแพคเกจ Ipkg และสามารถใช้ในการติดตั้งซอฟต์แวร์เช่น: Transmission BitTorrent daemon, ผู้ส่งอีเมล ssmtp และ Knockd a daemon ที่ดำเนินการสคริปต์หลังจากพอร์ตที่ระบุเพื่อทริกเกอร์ชื่อไม่กี่ จากไซต์ OpenWRT:
ยูทิลิตี opkg (ตัวแยก ipkg) เป็นตัวจัดการแพ็กเกจแบบเบาที่ใช้เพื่อดาวน์โหลดและติดตั้งแพ็กเกจ OpenWrt จากที่เก็บแพ็กเกจโลคัลหรือที่อยู่บนอินเทอร์เน็ต.
opkg
พยายามแก้ไขการขึ้นต่อกันกับแพ็กเกจในที่เก็บ - หากล้มเหลวมันจะรายงานข้อผิดพลาดและยกเลิกการติดตั้งแพ็กเกจนั้น.
ดังนั้นการใช้ Opkg เราสามารถติดตั้งสิ่งต่าง ๆ เช่นที่เราเคยทำกับ Ipkg ในคู่มือ“ ปลดปล่อยพลังยิ่งขึ้นจากเราเตอร์ที่บ้านของคุณ” ความแตกต่างที่สำคัญคือ:
- เพื่อให้ตัวอย่างของ SSMTP และ Knockd ของคุณอย่างแท้จริงต้องเข้าใจการพึ่งพาตนเอง ขั้นตอนในการดำเนินการด้วยตนเองนั้นน่ารำคาญและไม่ตรงไปตรงมา Opkg ทำสิ่งนี้โดยอัตโนมัติ.
- คราวนี้เราจะเป็น เพิ่ม ซอฟต์แวร์ด้านบนของเฟิร์มแวร์ที่มีอยู่แล้วแทนที่จะเปลี่ยน ในขณะที่แทนที่มันเป็นแบบฝึกหัดที่ยอดเยี่ยมมันไม่ต้องสงสัยเลยว่า: อันตรายมีแนวโน้มที่จะเกิดปัญหากลับไม่ได้และแย่ที่สุดของเราเตอร์ทั้งหมดโดยเฉพาะ ไม่จำเป็นต้องพูดว่านี่เป็นวิธีที่ง่ายและปลอดภัยยิ่งขึ้น.
ข้อกำหนดเบื้องต้น
ในการที่จะทำคู่มือนี้ให้สมบูรณ์โปรดทราบสิ่งต่อไปนี้
- ตามที่ระบุไว้ข้างต้นคู่มือนี้ถูกสร้างและทดสอบใน Buffalo WZR-HP-AG300H พร้อมกับเฟิร์มแวร์“ Pro” ของ Buffalo รุ่น 17135 ควรทำงานกับเราเตอร์ที่ใช้ Atheros (ar71xx) กับ DD-WRT รุ่นใดก็ได้ที่มีการแก้ไขเดียวกันหรือสูงกว่า แต่ระยะทางของคุณอาจมาก.
- คุณจะต้องเปิดใช้งาน SSH บนเราเตอร์รวมถึงติดตั้งและใช้ WinSCP เพื่อเชื่อมต่อกับมัน สิ่งนี้ได้อธิบายไว้ในคู่มือ“ วิธีลบโฆษณาด้วย Pixelserv บน DD-WRT” ในความเป็นจริงมันจะสันนิษฐานว่าคุณสามารถทำทุกอย่างที่อธิบายไว้ในคู่มือนั้น.
- คุณต้องสามารถเชื่อมต่อกับเราเตอร์โดยใช้เทอร์มินัล (แนะนำให้ใช้ SSH) พอยน์เตอร์บางตัวเกี่ยวกับวิธีการทำเช่นนี้อยู่ในวิกิ DD-WRT.
- พื้นที่สำหรับ JFFS และพื้นที่จัดรูปแบบการโพสต์ประมาณ 4MB สำหรับการตั้งค่าฐาน พื้นที่ JFFS ไม่เพียง แต่เป็นข้อกำหนดเบื้องต้นเท่านั้น แต่ยังเป็น show stopper นี่เป็นเพราะหากเราเตอร์ของคุณไม่มีพื้นที่จัดรูปแบบโพสต์อย่างน้อย 4MB ที่กล่าวถึงข้างต้นคุณจะไม่ได้รับประโยชน์ใด ๆ จากคู่มือนี้และจะดีกว่าเมื่อใช้“ Unleash ยิ่งกว่าพลังจากเราเตอร์ที่บ้านของคุณ” คำแนะนำในการติดตั้งแพคเกจ Ipkg ลงในเฟิร์มแวร์โดยตรงหรือติดตั้งแพ็กเกจ Ipkg ด้วยตนเอง ทำตามคำแนะนำในคู่มือ“ วิธีลบโฆษณาด้วย Pixelserv บน DD-WRT” เพื่อเปิดใช้งาน JFFS และดูว่าคุณมีพื้นที่ว่างมากแค่ไหน หลังจาก มันถูกจัดรูปแบบ.
บันทึก: เป็นไปได้ที่จะทำเช่นนี้ด้วยพื้นที่เพียง 2MB สำหรับการตั้งค่า แต่จากนั้นเราก็จะสูญเสียผลการอ่านและเขียนได้และจะต้องเรียกใช้ Opkg ในขณะที่ระบุไฟล์การตั้งค่าด้วยตนเองทุกครั้ง ง่อย ...
ช่วยให้ได้รับการแตกร้าว
ณ จุดนี้คุณควรเปิดใช้งาน JFFS และสามารถ SSH / WinSCP เข้าสู่เราเตอร์.
- เปิดเทอร์มินัลเซสชันไปยังเราเตอร์.
- สร้างไดเรกทอรีชั่วคราวที่เราจะทำงานใน:
mkdir / tmp / 1
cd / tmp / 1
ใช้ Ipkg เพื่อติดตั้ง Opkg
ในขณะที่เรากำลังจะเปลี่ยน Ipkg เป็นผู้จัดการแพ็คเกจเราจะใช้มันเพื่อติดตั้งแพ็คเกจติดตั้ง Opkg ด้วยตนเอง.
- เมื่อต้องการทำสิ่งนี้ให้ดาวน์โหลดแพ็คเกจการติดตั้ง Opkg สำหรับสถาปัตยกรรม ar71xx จาก trunk ของโครงการ OpenWRT:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
หมายเหตุ 1: ในขณะที่เขียนนี้ 618 เป็นรุ่นล่าสุดซึ่งอาจมีการเปลี่ยนแปลงในอนาคตดังนั้นควรปรับเปลี่ยนให้เหมาะสม.
โน้ต 2: อาจเป็นไปได้ที่ความแตกต่างเพียงอย่างเดียวในการทำให้คู่มือนี้ทำงานให้กับสถาปัตยกรรมอื่น ๆ คือการได้รับตัวติดตั้ง Opkg จากสถาปัตยกรรมที่ใช้งานได้สำหรับเราเตอร์ของคุณ .... - เรียกใช้ Ipkg เพื่อติดตั้ง Opkg ด้วยตนเองโดยใช้:
ipkg ติดตั้ง opkg_618-2_ar71xx.ipk
บันทึก: คุณสามารถติดตั้งทุกแพ็คเกจในที่เก็บด้วยตนเองด้วยวิธีนี้หากคุณต้องการ อย่างไรก็ตามนี่จะหมายความว่าคุณจะต้องแก้ไขการพึ่งพาตัวเอง ... และสิ่งที่สนุกในนั้น?
การรับไฟล์ไลบรารีแบบไดนามิก (“ lib”)
ไฟล์“ lib” ที่จำเป็นสำหรับการทำงานของ Opkg เป็นส่วนหนึ่งของการกระจาย OpenWRT เพื่อให้ได้มาหนึ่งจะต้องแยกพวกเขาจาก "รูท FileSystem" ของการกระจายดังกล่าว.
- ในการทำสิ่งนี้ให้ดาวน์โหลด "Root FileSystem" พื้นฐานล่าสุดสำหรับการเผยแพร่ openWRT ซึ่งมี "lib" ที่ต้องการจากลำต้นของโครงการ OpenWRT:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz
- แยกโดยใช้:
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
- คัดลอกไฟล์“ libs” จาก“ rootfs” ที่เราแยกไว้ด้านบนไปยังไดเรกทอรี“ libs” ใน JFFS ของเราในขณะที่รักษาคุณสมบัติและลิงก์สัญลักษณ์:
cp -Pp / tmp / 1 / lib / * / jffs / usr / lib /
บันทึก: คุณจะได้รับข้อความแจ้งว่ามีการละเว้นไดเรกทอรีย่อย เนื่องจากเราไม่ต้องการอะไรนอกจากไฟล์“ lib” นี่เป็นเรื่องปกติและคุณสามารถเพิกเฉยต่อข้อความเหล่านี้ได้อย่างปลอดภัย.
แก้ไข LD_LIBRARY“ เส้นทาง”
เราต้องบอกเราเตอร์ว่าจะค้นหาไลบรารี่ที่แชร์ได้อย่างไร (libs) ที่เราเพิ่ง“ ติดตั้ง” แล้วและมันต้องทำสิ่งนี้ ก่อน สิ่งที่มาพร้อมกับเฟิร์มแวร์.
- หากต้องการตั้งค่าตัวแปรสภาพแวดล้อม LD_LIBRARY ด้วยตนเอง (ตอนนี้) เพื่อกำหนดตำแหน่งที่เราคัดลอกไฟล์ lib ใหม่จะเป็นอันแรกใน“ PATH”:
ส่งออก LD_LIBRARY_PATH = / jffs / usr / lib: $ LD_LIBRARY_PATH
อ่านได้“ / ฯลฯ ”
เรากำลังจะคัดลอก“ / etc” ไปยัง JFFS และจากนั้นทำจุดเชื่อมต่อ“ / etc” เป็นประจำชี้ไปที่มัน การทำเช่นนั้นจะเปิดโลกแห่งความเป็นไปได้เพราะ“ / ฯลฯ ” จะกลายเป็นอ่านเขียนได้ (ซึ่งโดยส่วนตัวแล้วฉันรอคอยหรือให้เวลา 7 ปีแล้ว) และเปิดใช้งานแพ็คเกจที่คาดว่าพฤติกรรมนี้ทำงานได้อย่างถูกต้อง.
- สร้างไดเรกทอรีที่จะเก็บ“ / ฯลฯ ”:
mkdir -p / jffs / geek / etc
- คัดลอกทั้งหมดของ“ / etc” ซ้ำ ๆ ในขณะที่ยังคงรักษาไดเรกทอรีย่อยทั้งหมดแอตทริบิวต์ของไฟล์และลิงก์สัญลักษณ์.
cp -a / etc / * / jffs / geek / etc /
- ด้วยตนเอง (ตอนนี้)“ ผูกติด” ไดเรกทอรี“ / ฯลฯ ” เพื่อ JFFS หนึ่ง:
เมา -o ผูก / jffs / geek / etc / / etc /
ตั้งค่าไดเรกทอรี Optware (“ / opt”)
Opkg จาก OpenWRT คาดว่าจะใช้เมื่อสร้างเฟิร์มแวร์ของเราเตอร์ เมื่อถึงเวลาดังกล่าว FileSystem ยังไม่ได้อยู่บนเราเตอร์และยังคงมีการเปลี่ยนแปลงดังนั้นจึงไม่มีปัญหาในการติดตั้งไปยังตำแหน่งใด ๆ บน FileSystem นั่นคือสาเหตุที่ไฟล์กำหนดค่า Opkg ชี้แพคเกจเพื่อติดตั้งไปยัง“ root” (/) ของ FileSystem อย่างไรก็ตามเรากำลังใช้ Opkg หลังจาก เฟิร์มแวร์ถูกสร้างและติดตั้งบนเราเตอร์และเนื่องจากเราไม่สามารถเปลี่ยนรากของระบบไฟล์ที่สามารถอ่านได้เราจะชี้การติดตั้งทั้งหมดที่จะติดตั้งภายใต้“ / opt” อย่างไรก็ตามในปัจจุบัน“ / opt” ยังชี้ไปยังตำแหน่งอ่านอย่างเดียวบนเฟิร์มแวร์ของเราเตอร์ เพื่อเอาชนะสิ่งนี้เราจะทำให้“ / opt” ชี้ไปที่ JFFS ซึ่งอ่านได้.
- หากต้องการทำสิ่งนี้ให้สร้างไดเรกทอรีที่จะมีแพ็คเกจ Optware:
mkdir -p / jffs / opt
- ด้วยตนเอง (ตอนนี้)“ ผูกติด” ไดเรกทอรี“ / opt” ไปยัง JFFS หนึ่ง:
เมานต์ -o ผูก / jffs / opt / / opt /
หมายเหตุ: แม้ว่าจะอยู่นอกเหนือขอบเขตของคู่มือนี้, ผู้ใช้ขั้นสูงอาจต้องการเปลี่ยนจุดเมานท์นี้เพื่อชี้ไปที่ HD.
การปรับไฟล์กำหนดค่า Opkg
เราต้องการให้ไฟล์กำหนดค่า Opkg เป็นที่ที่ Opkg ค้นหาโดยค่าเริ่มต้น (ซึ่งคือ“ / ฯลฯ ”) และปรับให้ติดตั้งเป็น“ / opt”.
- หากต้องการทำสิ่งนี้ให้ย้ายไฟล์กำหนดค่า opkg ที่ติดตั้งโดยแพ็คเกจ Opkg ไปยังตำแหน่ง“ / etc” ที่อ่านได้:
mv /jffs/etc/opkg.conf / etc /
- เปลี่ยนปลายทางสำหรับการติดตั้ง Optware เป็น“ / opt” แทน“ root” (/).
หากต้องการทำสิ่งนี้ด้วยเครื่องมือ“ vi” หรือ WinSCP นำทางไปยัง“ / etc /” และสร้างเนื้อหาของไฟล์“ opkg.conf”:vi /etc/opkg.conf
ทำให้ดูเหมือน:
src / gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root / opt
dest ram / tmp
lists_dir ext / var / opkg-list
ตัวเลือก overlay_root / ซ้อนทับบันทึก: คุณสามารถเปลี่ยนคำสั่ง“ lists_dir” เพื่อชี้ไปยังตำแหน่งที่ไม่ได้อยู่ใน RAM แต่เปลี่ยนเป็น JFFS แม้ว่าสิ่งนี้จะช่วยให้คุณไม่สามารถอัปเดตรายการได้ก่อนที่คุณจะสามารถติดตั้งซอฟต์แวร์เพิ่มเติมได้ (หากเราเตอร์ของคุณถูกรีบูทจากครั้งล่าสุด) คุณจะสูญเสียพื้นที่ JFFS ที่หายากประมาณ 1.5MB และคุณจะทบต้น.
สวัสดีที่รัก
คุณควรเห็นว่า Opkg ใช้งานได้โดยออกคำสั่ง update และแสดงรายการคำสั่ง.
- หากทุกอย่างเป็นไปด้วยดีคุณจะเห็นว่ารายการ Opkg ได้รับการอัปเดตโดยไม่มีข้อผิดพลาดและคุณพร้อมที่จะใช้สคริปต์ในขั้นตอนถัดไป:
อัพเดต opkg; รายการ opkg
- ใช้เวลาในการเริ่มสำรวจแพ็คเกจที่มีในที่เก็บ ... .
สคริปต์เริ่มต้น
ตอนนี้เราต้องทำให้เสร็จสิ้นดังนั้นการติดตั้งและเส้นทางที่จำเป็นทั้งหมดจะเกิดขึ้นโดยอัตโนมัติเมื่อเราเตอร์บู๊ต ด้วยเหตุนี้เราจึงสร้างสคริปต์ geek-init เริ่มต้นให้คุณ.
- ดาวน์โหลดจากนั้นแตกไฟล์และวางไว้ใต้“ / jffs / geek / etc /” (ลองทำสิ่งนี้กับ WinSCP).
- ทำสคริปต์ให้ทำงานได้โดยไปที่คุณสมบัติด้วย WinSCP หรือเรียกใช้งาน:
chmod + x /jffs/geek/etc/geek-init.sh
- ทำให้สคริปต์ทำงานเมื่อเริ่มต้นเราเตอร์โดยใช้ WebGUI ภายใต้การดูแลระบบ -> คำสั่งในกล่องข้อความให้ใส่:
/jffs/geek/etc/geek-init.sh web-gui
และคลิก“ บันทึกการเริ่มต้น”.
เตะยาง
หากทุกอย่างเป็นไปด้วยดีตอนนี้คุณควรจะสามารถรีบูตเราเตอร์และยังคงใช้ตัวจัดการแพคเกจ Opkg นั่นคือการอัปเดตแสดงรายการและติดตั้งแอปพลิเคชัน.
ให้ทดสอบว่าทุกอย่างทำงานได้โดยติดตั้งคำสั่ง "netstat" ซึ่งด้วยเหตุผลบางอย่างถูกละเว้นจากการสร้างของ DD-WRT เมื่อเร็ว ๆ นี้ ก่อนที่เราจะทำสิ่งนี้ให้รันคำสั่ง netstat ในเทอร์มินัลแล้วคุณจะเห็นว่าคุณมีข้อผิดพลาดจากเชลล์โดยพูดว่า“ -sh: netstat: not found”.
- ขั้นตอนแรกของคุณคือเพื่ออัปเดตรายการ Opkg เหมือนกับมีรายชื่อแพ็คเกจล่าสุดจากที่เก็บ:
การปรับปรุง opkg
- หากคุณไม่ทราบว่าแพ็คเกจใดมีคำสั่ง“ netstat” คุณสามารถกรองผลลัพธ์โดยใช้.
รายการ opkg | grep netstat
- และตอนนี้ติดตั้ง“ netstat” โดยใช้:
opkg ติดตั้ง net-tools-netstat
และตอนนี้เมื่อคุณรันคำสั่ง netstat อีกครั้งมันใช้งานได้…เรียบร้อยแล้ว? :)
จนกว่าบทความในอนาคตที่เราจะติดตั้งและกำหนดค่าแพคเกจซอฟต์แวร์โดยใช้วิธีนี้คุณอาจมีความสนุกสนานมากมายที่จะสำรวจซอฟต์แวร์จำนวนมากที่ตอนนี้อยู่ที่ปลายนิ้วของคุณ.
หากเครื่องดังกล่าวเป็นสิ่งที่เป็นไปไม่ได้เสมือนมันจะต้องมีเหตุผลที่ไม่น่าเป็นไปได้ จำกัด ดังนั้นสิ่งที่ฉันต้องทำเพื่อที่จะทำให้มันเป็นไปได้อย่างไม่น่าเชื่อว่ามันเป็นไปไม่ได้ที่จะกินอาหารนั้นเป็นเครื่องกำเนิดไฟฟ้าที่ไม่น่าจะเป็นไปได้ จำกัด ให้ชาร้อนๆร้อนๆและเปิดมัน………สิ่งหนึ่งที่พวกเขา ไม่ชอบจริงๆคือ“ Smart-Ass”.